Enumerable.ThenBy Metod

Definition

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.

Se även

Gäller för