Enumerable.ThenBy Yöntem

Tanım

Bir dizideki öğelerin sonraki sıralamasını artan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in ascending order.

Aşırı Yüklemeler

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

Belirtilen karşılaştırıcıyı kullanarak bir dizideki öğelerin sonraki sıralamasını artan sırada gerçekleştirir.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>)

Bir dizide, bir anahtara göre artan düzende öğelerin sonraki sıralamasını gerçekleştirir.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>)

Belirtilen karşılaştırıcıyı kullanarak bir dizideki öğelerin sonraki sıralamasını artan sırada gerçekleştirir.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);
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)

Tür Parametreleri

TSource

Öğelerinin türü source .The type of the elements of source.

TKey

Tarafından döndürülen anahtarın türü keySelector .The type of the key returned by keySelector.

Parametreler

source
IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement>Sıralanacak öğeleri içeren bir.An IOrderedEnumerable<TElement> that contains elements to sort.

keySelector
Func<TSource,TKey>

Her öğeden bir anahtarı ayıklamak için bir işlev.A function to extract a key from each element.

comparer
IComparer<TKey>

IComparer<T>Anahtarları karşılaştırmak için.An IComparer<T> to compare keys.

Döndürülenler

IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement>Öğeleri bir anahtara göre sıralanır.An IOrderedEnumerable<TElement> whose elements are sorted according to a key.

Özel durumlar

source ya keySelector da null .source or keySelector is null.

Açıklamalar

Bu yöntem ertelenmiş yürütme kullanılarak uygulanır.This method is implemented by using deferred execution. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir.The immediate return value is an object that stores all the information that is required to perform the action. Bu yöntem tarafından temsil edilen sorgu, nesne GetEnumerator yöntemi doğrudan çağırarak ya da foreach Visual C# ' de veya Visual Basic kullanılarak numaralandırılana kadar yürütülmez For Each .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.

Öğelerin değerlerine göre sıra sıralamak için kimlik işlevini ( x => x Visual C# ' ta veya Function(x) x Visual Basic) için belirtin 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 ve ThenByDescending IOrderedEnumerable<TElement> aynı zamanda bu yöntemlerin dönüş türü olan türü genişletmek için tanımlanmıştır.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Bu tasarım, herhangi bir sayıda veya yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar ThenByDescending .This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.

Not

IOrderedEnumerable<TElement>Öğesinden devraldığından,, IEnumerable<T> OrderBy OrderByDescending veya için bir çağrının sonuçlarını çağırabilirsiniz OrderBy OrderByDescending ThenBy 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. Bunu yapmak, önceden belirlenen sıralamayı yok sayan yeni bir birincil sıralama sağlar.Doing this introduces a new primary ordering that ignores the previously established ordering.

comparerİse null , Default anahtarları karşılaştırmak için varsayılan karşılaştırıcı kullanılır.If comparer is null, the default comparer Default is used to compare keys.

Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir deyişle, iki öğenin anahtarları eşitse öğelerin sırası korunur.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Buna karşılık, kararsız bir sıralama aynı anahtara sahip olan öğelerin sırasını korumaz.In contrast, an unstable sort does not preserve the order of elements that have the same key.

Şunlara uygulanır

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

Bir dizide, bir anahtara göre artan düzende öğelerin sonraki sıralamasını gerçekleştirir.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)

Tür Parametreleri

TSource

Öğelerinin türü source .The type of the elements of source.

TKey

Tarafından döndürülen anahtarın türü keySelector .The type of the key returned by keySelector.

Parametreler

source
IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement>Sıralanacak öğeleri içeren bir.An IOrderedEnumerable<TElement> that contains elements to sort.

keySelector
Func<TSource,TKey>

Her öğeden bir anahtarı ayıklamak için bir işlev.A function to extract a key from each element.

Döndürülenler

IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement>Öğeleri bir anahtara göre sıralanır.An IOrderedEnumerable<TElement> whose elements are sorted according to a key.

Özel durumlar

source ya keySelector da null .source or keySelector is null.

Örnekler

Aşağıdaki kod örneği, ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) bir dizideki öğelerin ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını gösterir.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
Console.WriteLine(output.ToString())

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

Açıklamalar

Bu yöntem ertelenmiş yürütme kullanılarak uygulanır.This method is implemented by using deferred execution. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir.The immediate return value is an object that stores all the information that is required to perform the action. Bu yöntem tarafından temsil edilen sorgu, nesne GetEnumerator yöntemi doğrudan çağırarak ya da foreach Visual C# ' de veya Visual Basic kullanılarak numaralandırılana kadar yürütülmez For Each .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.

Öğelerin değerlerine göre sıra sıralamak için kimlik işlevini ( x => x Visual C# ' ta veya Function(x) x Visual Basic) için belirtin 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 ve ThenByDescending IOrderedEnumerable<TElement> aynı zamanda bu yöntemlerin dönüş türü olan türü genişletmek için tanımlanmıştır.ThenBy and ThenByDescending are defined to extend the type IOrderedEnumerable<TElement>, which is also the return type of these methods. Bu tasarım, herhangi bir sayıda veya yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar ThenByDescending .This design enables you to specify multiple sort criteria by applying any number of ThenBy or ThenByDescending methods.

Not

IOrderedEnumerable<TElement>Öğesinden devraldığından,, IEnumerable<T> OrderBy OrderByDescending veya için bir çağrının sonuçlarını çağırabilirsiniz OrderBy OrderByDescending ThenBy 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. Bunu yapmak, önceden belirlenen sıralamayı yok sayan yeni bir birincil sıralama sağlar.Doing this introduces a new primary ordering that ignores the previously established ordering.

Bu yöntem, anahtarları varsayılan karşılaştırıcıyı kullanarak karşılaştırır Default .This method compares keys by using the default comparer Default.

Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir deyişle, iki öğenin anahtarları eşitse öğelerin sırası korunur.This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. Buna karşılık, kararsız bir sıralama aynı anahtara sahip olan öğelerin sırasını korumaz.In contrast, an unstable sort does not preserve the order of elements that have the same key.

Sorgu ifadesi sözdiziminde, bir orderby [first criterion], [second criterion] (Visual C#) veya Order By [first criterion], [second criterion] (Visual Basic) yan tümcesi çağrısı yapar 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.

Ayrıca bkz.

Şunlara uygulanır