Język

Enumerable.ThenBy Metoda

Definicja

Wykonuje kolejność elementów w kolejności rosnącej.

Przeciążenia

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

Wykonuje kolejność elementów w kolejności rosnącej zgodnie z kluczem.

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

Wykonuje kolejność elementów w kolejności rosnącej przy użyciu określonego modułu porównującego.

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

Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs

Wykonuje kolejność elementów w kolejności rosnącej zgodnie z kluczem.

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 elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IOrderedEnumerable<TSource>

Element IOrderedEnumerable<TElement> zawierający elementy do sortowania.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z każdego elementu.

Zwraca

Element IOrderedEnumerable<TElement> , którego elementy są sortowane według klucza.

Wyjątki

source lub keySelector ma wartość null.

Przykłady

W poniższym przykładzie kodu pokazano, jak wykonać ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) kolejność pomocniczą elementów w sekwencji.

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

Uwagi

Ta metoda jest implementowana przy użyciu odroczonego wykonania. Natychmiastowa wartość zwracana to obiekt, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony przez wywołanie metody GetEnumerator bezpośrednio lub przy użyciu foreach w języku C# lub For Each w Visual Basic.

Aby uporządkować sekwencję według samych wartości elementów, określ funkcję tożsamości (x => x w języku C# lub Function(x) x w Visual Basic) dla keySelector.

ThenBy i ThenByDescending są zdefiniowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest również zwracany typ tych metod. Ten projekt umożliwia określenie wielu kryteriów sortowania przez zastosowanie dowolnej liczby ThenBy metod lub ThenByDescending .

Note

Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>elementu , możesz wywołać OrderBy metodę lub OrderByDescending na podstawie wyników wywołania metody OrderBy, OrderByDescendingThenBy lub ThenByDescending. W tym celu wprowadzono nową kolejność podstawową, która ignoruje wcześniej ustanowione kolejność.

Ta metoda porównuje klucze przy użyciu domyślnego modułu Defaultporównującego .

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klucze dwóch elementów są równe, kolejność elementów jest zachowywana. Natomiast niestabilny sortowanie nie zachowuje kolejności elementów, które mają ten sam klucz.

W składni wyrażenia zapytania klauzula orderby [first criterion], [second criterion] (C#) lub Order By [first criterion], [second criterion] (Visual Basic) przekłada się na wywołanie ThenBy.

Zobacz też

Dotyczy

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

Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs

Wykonuje kolejność elementów w kolejności rosnącej przy użyciu określonego modułu porównującego.

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 elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IOrderedEnumerable<TSource>

Element IOrderedEnumerable<TElement> zawierający elementy do sortowania.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z każdego elementu.

comparer
IComparer<TKey>

Element IComparer<T> do porównywania kluczy.

Zwraca

Element IOrderedEnumerable<TElement> , którego elementy są sortowane według klucza.

Wyjątki

source lub keySelector ma wartość null.

Uwagi

Ta metoda jest implementowana przy użyciu odroczonego wykonania. Natychmiastowa wartość zwracana to obiekt, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony przez wywołanie metody GetEnumerator bezpośrednio lub przy użyciu foreach w języku C# lub For Each w Visual Basic.

Aby uporządkować sekwencję według samych wartości elementów, określ funkcję tożsamości (x => x w języku C# lub Function(x) x w Visual Basic) dla keySelector.

ThenBy i ThenByDescending są zdefiniowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest również zwracany typ tych metod. Ten projekt umożliwia określenie wielu kryteriów sortowania przez zastosowanie dowolnej liczby ThenBy metod lub ThenByDescending .

Note

Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>elementu , możesz wywołać OrderBy metodę lub OrderByDescending na podstawie wyników wywołania metody OrderBy, OrderByDescendingThenBy lub ThenByDescending. W tym celu wprowadzono nową kolejność podstawową, która ignoruje wcześniej ustanowione kolejność.

Jeśli comparer parametr to null, domyślny moduł porównujący Default jest używany do porównywania kluczy.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klucze dwóch elementów są równe, kolejność elementów jest zachowywana. Natomiast niestabilny sortowanie nie zachowuje kolejności elementów, które mają ten sam klucz.

Dotyczy