Enumerable.ThenBy 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 crescente degli elementi di una sequenza.
Overload
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Esegue un successivo ordinamento in senso crescente in base a una chiave degli elementi di una sequenza. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Esegue un ordinamento secondario in senso crescente degli elementi di una sequenza utilizzando un operatore di confronto specificato. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
Esegue un successivo ordinamento in senso crescente 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> ^ ThenBy(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenBy : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenBy(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 secondo una chiave.
Eccezioni
source
o keySelector
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come usare ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) per eseguire un ordinamento secondario degli elementi in una sequenza.
string[] fruits = { "grape", "passionfruit", "banana", "mango",
"orange", "raspberry", "apple", "blueberry" };
// Sort the strings first by their length and then
//alphabetically by passing the identity selector function.
IEnumerable<string> query =
fruits.OrderBy(fruit => fruit.Length).ThenBy(fruit => fruit);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
/*
This code produces the following output:
apple
grape
mango
banana
orange
blueberry
raspberry
passionfruit
*/
' Create an array of strings.
Dim fruits() As String =
{"grape", "passionfruit", "banana", "mango",
"orange", "raspberry", "apple", "blueberry"}
' Sort the strings first by their length and then
' alphabetically by passing the identity function.
Dim query As IEnumerable(Of String) =
fruits _
.OrderBy(Function(fruit) fruit.Length) _
.ThenBy(Function(fruit) fruit)
' 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())
' This code produces the following output:
'
' apple
' grape
' mango
' banana
' orange
' blueberry
' raspberry
' passionfruit
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 fino a quando l'oggetto non viene enumerato chiamando direttamente il relativo GetEnumerator
metodo 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 un numero qualsiasi 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 confronta le chiavi usando l'operatore Defaultdi confronto predefinito .
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 con la stessa chiave.
Nella sintassi dell'espressione di query, una orderby [first criterion], [second criterion]
clausola (C#) o Order By [first criterion], [second criterion]
(Visual Basic) viene convertita in una chiamata di ThenBy.
Vedi anche
Si applica a
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
- Origine:
- OrderBy.cs
Esegue un ordinamento secondario in senso crescente 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> ^ ThenBy(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> ThenBy<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member ThenBy : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenBy(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 secondo 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 fino a quando l'oggetto non viene enumerato chiamando direttamente il relativo GetEnumerator
metodo 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 un numero qualsiasi 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
, l'operatore Default di confronto 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 con la stessa chiave.