Enumerable.ThenBy Metoda

Definice

Provede následné řazení prvků ve vzestupném pořadí.

Přetížení

Name Description
ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)

Provede následné řazení prvků ve vzestupném pořadí podle klíče.

ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Provede následné řazení prvků ve vzestupném pořadí pomocí zadaného porovnávače.

ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)

Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs

Provede následné řazení prvků ve vzestupném pořadí podle klíče.

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)

Parametry typu

TSource

Typ prvků .source

TKey

Typ klíče vráceného keySelector.

Parametry

source
IOrderedEnumerable<TSource>

Obsahuje IOrderedEnumerable<TElement> prvky, které se mají seřadit.

keySelector
Func<TSource,TKey>

Funkce, která extrahuje klíč z každého prvku.

Návraty

Jejíž IOrderedEnumerable<TElement> prvky jsou seřazeny podle klíče.

Výjimky

source nebo keySelector je null.

Příklady

Následující příklad kódu ukazuje, jak použít ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) k provedení sekundárního pořadí prvků v sekvenci.

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

Poznámky

Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.

Pokud chcete pořadí seřadit podle hodnot samotných prvků, zadejte funkci identity (x => x v jazyce C# nebo Function(x) x v Visual Basic) pro keySelector.

ThenBy a ThenByDescending jsou definovány pro rozšíření typu IOrderedEnumerable<TElement>, což je také návratový typ těchto metod. Tento návrh umožňuje zadat více kritérií řazení použitím libovolného ThenBy počtu nebo ThenByDescending metod.

Note

Vzhledem k tomuIOrderedEnumerable<TElement>, že dědí z IEnumerable<T>, můžete zavolat OrderBy nebo OrderByDescending na výsledky volání OrderBy, OrderByDescendingThenBy nebo ThenByDescending. Tím se zavádí nové primární řazení, které ignoruje dříve zavedené řazení.

Tato metoda porovnává klíče pomocí výchozího porovnávače Default.

Tato metoda provádí stabilní řazení; to znamená, že pokud jsou klíče dvou prvků stejné, pořadí prvků je zachováno. Naproti tomu nestabilní řazení nezachová pořadí prvků, které mají stejný klíč.

V syntaxi výrazu dotazu se klauzule orderby [first criterion], [second criterion] (C#) nebo Order By [first criterion], [second criterion] (Visual Basic) překládá na vyvolání ThenBy.

Viz také

Platí pro

ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs
Zdroj:
OrderBy.cs

Provede následné řazení prvků ve vzestupném pořadí pomocí zadaného porovnávače.

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)

Parametry typu

TSource

Typ prvků .source

TKey

Typ klíče vráceného keySelector.

Parametry

source
IOrderedEnumerable<TSource>

Obsahuje IOrderedEnumerable<TElement> prvky, které se mají seřadit.

keySelector
Func<TSource,TKey>

Funkce, která extrahuje klíč z každého prvku.

comparer
IComparer<TKey>

Porovnávat IComparer<T> klíče.

Návraty

Jejíž IOrderedEnumerable<TElement> prvky jsou seřazeny podle klíče.

Výjimky

source nebo keySelector je null.

Poznámky

Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.

Pokud chcete pořadí seřadit podle hodnot samotných prvků, zadejte funkci identity (x => x v jazyce C# nebo Function(x) x v Visual Basic) pro keySelector.

ThenBy a ThenByDescending jsou definovány pro rozšíření typu IOrderedEnumerable<TElement>, což je také návratový typ těchto metod. Tento návrh umožňuje zadat více kritérií řazení použitím libovolného ThenBy počtu nebo ThenByDescending metod.

Note

Vzhledem k tomuIOrderedEnumerable<TElement>, že dědí z IEnumerable<T>, můžete zavolat OrderBy nebo OrderByDescending na výsledky volání OrderBy, OrderByDescendingThenBy nebo ThenByDescending. Tím se zavádí nové primární řazení, které ignoruje dříve zavedené řazení.

Pokud comparer ano null, použije se k porovnání klíčů výchozí porovnávač Default .

Tato metoda provádí stabilní řazení; to znamená, že pokud jsou klíče dvou prvků stejné, pořadí prvků je zachováno. Naproti tomu nestabilní řazení nezachová pořadí prvků, které mají stejný klíč.

Platí pro