Enumerable.ThenByDescending Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Esegue un successivo ordinamento in senso decrescente degli elementi di una sequenza.
Overload
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Esegue un successivo ordinamento in senso decrescente in base a una chiave degli elementi di una sequenza. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Esegue un ordinamento secondario in senso decrescente degli elementi di una sequenza utilizzando un operatore di confronto specificato. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
Esegue un successivo ordinamento in senso decrescente in base a una chiave degli elementi di una sequenza.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IOrderedEnumerable(Of TSource)
Parametri di tipo
- TSource
Tipo degli elementi di source
.
- TKey
Tipo della chiave restituita dall'oggetto keySelector
.
Parametri
- source
- IOrderedEnumerable<TSource>
Oggetto IOrderedEnumerable<TElement> che contiene gli elementi da ordinare.
- keySelector
- Func<TSource,TKey>
Funzione per estrarre una chiave da ogni elemento.
Restituisce
Oggetto IOrderedEnumerable<TElement> i cui elementi vengono ordinati in senso decrescente in base a una chiave.
Eccezioni
source
o keySelector
è null
.
Commenti
Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita finché l'oggetto non viene enumerato chiamando il GetEnumerator
relativo metodo direttamente o usando foreach
in C# o For Each
in Visual Basic.
Per ordinare una sequenza in base ai valori degli elementi stessi, specificare la funzione identity (x => x
in C# o Function(x) x
in Visual Basic) per keySelector
.
ThenBy e ThenByDescending sono definiti per estendere il tipo IOrderedEnumerable<TElement>, che è anche il tipo restituito di questi metodi. Questa progettazione consente di specificare più criteri di ordinamento applicando qualsiasi numero di ThenBy metodi o ThenByDescending .
Nota
Poiché IOrderedEnumerable<TElement> eredita da IEnumerable<T>, è possibile chiamare OrderBy o OrderByDescending sui risultati di una chiamata a OrderBy, OrderByDescendingThenBy o ThenByDescending. In questo modo viene introdotto un nuovo ordinamento primario che ignora l'ordinamento stabilito in precedenza.
Questo metodo di ordinamento confronta le chiavi usando il comparer Defaultpredefinito .
Questo metodo esegue un ordinamento stabile; ovvero, se le chiavi di due elementi sono uguali, l'ordine degli elementi viene mantenuto. Al contrario, un ordinamento instabile non mantiene l'ordine degli elementi che hanno la stessa chiave.
Nella sintassi orderby [first criterion], [second criterion] descending
dell'espressione di query C# una clausola viene tradotta in una chiamata di ThenByDescending.
Nella sintassi dell'espressione di query di Visual Basic, una Order By [first criterion], [second criterion] Descending
clausola si traduce in una chiamata di ThenByDescending.
Vedi anche
Si applica a
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
Esegue un ordinamento secondario in senso decrescente degli elementi di una sequenza utilizzando un operatore di confronto specificato.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IComparer(Of TKey)) As IOrderedEnumerable(Of TSource)
Parametri di tipo
- TSource
Tipo degli elementi di source
.
- TKey
Tipo della chiave restituita dall'oggetto keySelector
.
Parametri
- source
- IOrderedEnumerable<TSource>
Oggetto IOrderedEnumerable<TElement> che contiene gli elementi da ordinare.
- keySelector
- Func<TSource,TKey>
Funzione per estrarre una chiave da ogni elemento.
- comparer
- IComparer<TKey>
Oggetto IComparer<T> per confrontare le chiavi.
Restituisce
Oggetto IOrderedEnumerable<TElement> i cui elementi vengono ordinati in senso decrescente in base a una chiave.
Eccezioni
source
o keySelector
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come usare ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) per eseguire un ordinamento secondario degli elementi in una sequenza in ordine decrescente usando un comparer personalizzato.
public class CaseInsensitiveComparer : IComparer<string>
{
public int Compare(string x, string y)
{
return string.Compare(x, y, true);
}
}
public static void ThenByDescendingEx1()
{
string[] fruits = { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };
// Sort the strings first ascending by their length and
// then descending using a custom case insensitive comparer.
IEnumerable<string> query =
fruits
.OrderBy(fruit => fruit.Length)
.ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
}
/*
This code produces the following output:
apPLe
apple
APple
apPLE
orange
ORANGE
baNanA
BAnana
*/
' This class provides a custom implementation of the Compare() method.
Class CaseInsensitiveComparer
Implements IComparer(Of String)
Function Compare(ByVal x As String, ByVal y As String) As Integer _
Implements IComparer(Of String).Compare
' Compare values and ignore case.
Return String.Compare(x, y, True)
End Function
End Class
Sub ThenByDescendingEx1()
Dim fruits() As String =
{"apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE"}
' Sort the strings first by their length and then
' by using a custom "case insensitive" comparer.
Dim query As IEnumerable(Of String) =
fruits _
.OrderBy(Function(fruit) fruit.Length) _
.ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())
' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
output.AppendLine(fruit)
Next
Console.WriteLine(output.ToString())
End Sub
' This code produces the following output:
' apPLe
' apple
' APple
' apPLE
' orange
' ORANGE
' baNanA
' BAnana
Commenti
Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita finché l'oggetto non viene enumerato chiamando il GetEnumerator
relativo metodo direttamente o usando foreach
in C# o For Each
in Visual Basic.
Per ordinare una sequenza in base ai valori degli elementi stessi, specificare la funzione identity (x => x
in C# o Function(x) x
in Visual Basic) per keySelector
.
ThenBy e ThenByDescending sono definiti per estendere il tipo IOrderedEnumerable<TElement>, che è anche il tipo restituito di questi metodi. Questa progettazione consente di specificare più criteri di ordinamento applicando qualsiasi numero di ThenBy metodi o ThenByDescending .
Nota
Poiché IOrderedEnumerable<TElement> eredita da IEnumerable<T>, è possibile chiamare OrderBy o OrderByDescending sui risultati di una chiamata a OrderBy, OrderByDescendingThenBy o ThenByDescending. In questo modo viene introdotto un nuovo ordinamento primario che ignora l'ordinamento stabilito in precedenza.
Se comparer
è null
, il comparer Default predefinito viene usato per confrontare le chiavi.
Questo metodo esegue un ordinamento stabile; ovvero, se le chiavi di due elementi sono uguali, l'ordine degli elementi viene mantenuto. Al contrario, un ordinamento instabile non mantiene l'ordine degli elementi che hanno la stessa chiave.