Enumerable.ThenBy Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Utför en efterföljande ordning av elementen i en sekvens i stigande ordning.
Överlagringar
| Name | Description |
|---|---|
| ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Utför en efterföljande ordning av elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse. |
| ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Utför en efterföljande ordning av elementen i en sekvens i stigande ordning enligt en nyckel. |
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
Utför en efterföljande ordning av elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse.
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)
Typparametrar
- TSource
Typen av element sourcei .
- TKey
Typ av nyckel som returneras av keySelector.
Parametrar
- source
- IOrderedEnumerable<TSource>
En IOrderedEnumerable<TElement> som innehåller element som ska sorteras.
- keySelector
- Func<TSource,TKey>
En funktion för att extrahera en nyckel från varje element.
- comparer
- IComparer<TKey>
En IComparer<T> för att jämföra nycklar.
Returer
En IOrderedEnumerable<TElement> vars element sorteras enligt en nyckel.
Undantag
source eller keySelector är null.
Kommentarer
Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.
Om du vill ordna en sekvens efter värdena för själva elementen anger du identitetsfunktionen (x => x i C# eller Function(x) x i Visual Basic) för keySelector.
ThenBy och ThenByDescending definieras för att utöka typen IOrderedEnumerable<TElement>, som också är returtypen för dessa metoder. Med den här designen kan du ange flera sorteringsvillkor genom att använda valfritt antal ThenBy eller ThenByDescending metoder.
Note
Eftersom IOrderedEnumerable<TElement> ärver från IEnumerable<T>kan du anropa OrderBy eller OrderByDescending på resultatet av ett anrop till OrderBy, OrderByDescendingThenBy eller ThenByDescending. När du gör detta introduceras en ny primär ordning som ignorerar den tidigare etablerade ordningen.
Om comparer är nullanvänds standardjäxaren Default för att jämföra nycklar.
Den här metoden utför en stabil sortering. Om nycklarna för två element är lika bevaras elementens ordning. En instabil sortering bevarar däremot inte ordningen på element som har samma nyckel.
Gäller för
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
- Källa:
- OrderBy.cs
Utför en efterföljande ordning av elementen i en sekvens i stigande ordning enligt en nyckel.
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)
Typparametrar
- TSource
Typen av element sourcei .
- TKey
Typ av nyckel som returneras av keySelector.
Parametrar
- source
- IOrderedEnumerable<TSource>
En IOrderedEnumerable<TElement> som innehåller element som ska sorteras.
- keySelector
- Func<TSource,TKey>
En funktion för att extrahera en nyckel från varje element.
Returer
En IOrderedEnumerable<TElement> vars element sorteras enligt en nyckel.
Undantag
source eller keySelector är null.
Exempel
Följande kodexempel visar hur du använder ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) för att utföra en sekundär ordning av elementen i en sekvens.
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
Kommentarer
Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.
Om du vill ordna en sekvens efter värdena för själva elementen anger du identitetsfunktionen (x => x i C# eller Function(x) x i Visual Basic) för keySelector.
ThenBy och ThenByDescending definieras för att utöka typen IOrderedEnumerable<TElement>, som också är returtypen för dessa metoder. Med den här designen kan du ange flera sorteringsvillkor genom att använda valfritt antal ThenBy eller ThenByDescending metoder.
Note
Eftersom IOrderedEnumerable<TElement> ärver från IEnumerable<T>kan du anropa OrderBy eller OrderByDescending på resultatet av ett anrop till OrderBy, OrderByDescendingThenBy eller ThenByDescending. När du gör detta introduceras en ny primär ordning som ignorerar den tidigare etablerade ordningen.
Den här metoden jämför nycklar med hjälp av standardjäxaren Default.
Den här metoden utför en stabil sortering. Om nycklarna för två element är lika bevaras elementens ordning. En instabil sortering bevarar däremot inte ordningen på element som har samma nyckel.
I frågeuttryckssyntax översätts en orderby [first criterion], [second criterion] (C#) eller Order By [first criterion], [second criterion]-sats (Visual Basic) till ett anrop av ThenBy.