Enumerable.ThenBy Metoda

Definicja

Wykonuje kolejne porządkowanie elementów w kolejności rosnącej.Performs a subsequent ordering of the elements in a sequence in ascending order.

Przeciążenia

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

Wykonuje kolejne porządkowanie elementów w sekwencji rosnącej w kolejności przy użyciu określonej funkcji porównującej.Performs a subsequent ordering of the elements in a sequence in ascending order by using a specified comparer.

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

Wykonuje kolejne porządkowanie elementów w kolejności rosnącej według klucza.Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.

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

Wykonuje kolejne porządkowanie elementów w sekwencji rosnącej w kolejności przy użyciu określonej funkcji porównującej.Performs a subsequent ordering of the elements in a sequence in ascending order by using a specified comparer.

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);
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 source.The type of the elements of source.

TKey

Typ klucza zwracanego przez keySelector.The type of the key returned by keySelector.

Parametry

source
IOrderedEnumerable<TSource>

@No__t_0, który zawiera elementy do sortowania.An IOrderedEnumerable<TElement> that contains elements to sort.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z każdego elementu.A function to extract a key from each element.

comparer
IComparer<TKey>

@No__t_0 do porównywania kluczy.An IComparer<T> to compare keys.

Zwraca

@No__t_0, których elementy są sortowane według klucza.An IOrderedEnumerable<TElement> whose elements are sorted according to a key.

Wyjątki

source lub keySelector jest null.source or keySelector is null.

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania.This method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane do momentu wyliczenia obiektu przez wywołanie jego metody GetEnumerator bezpośrednio lub przy użyciu foreach w wizualizacji C# lub For Each w Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Aby zamówić sekwencję według wartości samych elementów, określ funkcję Identity (x => x w wizualizacji C# lub Function(x) x w Visual Basic) dla keySelector.To order a sequence by the values of the elements themselves, specify the identity function (x => x in Visual C# or Function(x) x in Visual Basic) for keySelector.

ThenBy i ThenByDescending są zdefiniowane do rozszerania IOrderedEnumerable<TElement> typu, który jest również typem zwracanym tych metod.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Ten projekt umożliwia określenie wielu kryteriów sortowania, stosując dowolną liczbę metod ThenBy lub ThenByDescending.This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.

Uwaga

Ponieważ IOrderedEnumerable<TElement> dziedziczy po IEnumerable<T>, można wywołać OrderBy lub OrderByDescending wyników wywołania OrderBy, OrderByDescending, ThenBy lub ThenByDescending.Because IOrderedEnumerable<TElement> inherits from IEnumerable<T>, you can call OrderBy or OrderByDescending on the results of a call to OrderBy, OrderByDescending, ThenBy or ThenByDescending. Ten sposób wprowadza nowe podstawowe ustawianie kolejności, które ignoruje ustanowiony wcześniej sposób ustawiania.Doing this introduces a new primary ordering that ignores the previously established ordering.

Jeśli comparer jest null, domyślny Default porównujący jest używany do porównywania kluczy.If comparer is null, the default comparer Default is used to compare keys.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klawisze dwóch elementów są równe, kolejność elementów jest zachowywana.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Z drugiej strony, niestabilne sortowanie nie pozwala zachować kolejności elementów, które mają ten sam klucz.In contrast, an unstable sort does not preserve the order of elements that have the same key.

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

Wykonuje kolejne porządkowanie elementów w kolejności rosnącej według klucza.Performs a subsequent ordering of the elements in a sequence in ascending order according to a key.

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 source.The type of the elements of source.

TKey

Typ klucza zwracanego przez keySelector.The type of the key returned by keySelector.

Parametry

source
IOrderedEnumerable<TSource>

@No__t_0, który zawiera elementy do sortowania.An IOrderedEnumerable<TElement> that contains elements to sort.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z każdego elementu.A function to extract a key from each element.

Zwraca

@No__t_0, których elementy są sortowane według klucza.An IOrderedEnumerable<TElement> whose elements are sorted according to a key.

Wyjątki

source lub keySelector jest null.source or keySelector is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) do wykonywania pomocniczej kolejności elementów w sekwencji.The following code example demonstrates how to use ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) to perform a secondary ordering of the elements in a sequence.

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
MsgBox(output.ToString())

' This code produces the following output:
'
' apple
' grape
' mango
' banana
' orange
' blueberry
' raspberry
' passionfruit

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania.This method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane do momentu wyliczenia obiektu przez wywołanie jego metody GetEnumerator bezpośrednio lub przy użyciu foreach w wizualizacji C# lub For Each w Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

Aby zamówić sekwencję według wartości samych elementów, określ funkcję Identity (x => x w wizualizacji C# lub Function(x) x w Visual Basic) dla keySelector.To order a sequence by the values of the elements themselves, specify the identity function (x => x in Visual C# or Function(x) x in Visual Basic) for keySelector.

ThenBy i ThenByDescending są zdefiniowane do rozszerania IOrderedEnumerable<TElement> typu, który jest również typem zwracanym tych metod.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Ten projekt umożliwia określenie wielu kryteriów sortowania, stosując dowolną liczbę metod ThenBy lub ThenByDescending.This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.

Uwaga

Ponieważ IOrderedEnumerable<TElement> dziedziczy po IEnumerable<T>, można wywołać OrderBy lub OrderByDescending wyników wywołania OrderBy, OrderByDescending, ThenBy lub ThenByDescending.Because IOrderedEnumerable<TElement> inherits from IEnumerable<T>, you can call OrderBy or OrderByDescending on the results of a call to OrderBy, OrderByDescending, ThenBy or ThenByDescending. Ten sposób wprowadza nowe podstawowe ustawianie kolejności, które ignoruje ustanowiony wcześniej sposób ustawiania.Doing this introduces a new primary ordering that ignores the previously established ordering.

Ta metoda porównuje klucze przy użyciu domyślnej Default porównującej.This method compares keys by using the default comparer Default.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klawisze dwóch elementów są równe, kolejność elementów jest zachowywana.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Z drugiej strony, niestabilne sortowanie nie pozwala zachować kolejności elementów, które mają ten sam klucz.In contrast, an unstable sort does not preserve the order of elements that have the same key.

W składni wyrażenia zapytania, klauzula orderby [first criterion], [second criterion] (wizualizacja C#) lub Order By [first criterion], [second criterion] (Visual Basic) tłumaczy na wywołanie ThenBy.In query expression syntax, an orderby [first criterion], [second criterion] (Visual C#) or Order By [first criterion], [second criterion] (Visual Basic) clause translates to an invocation of ThenBy.

Zobacz też

Dotyczy