Enumerable.ThenBy Yöntem

Tanım

Bir dizideki öğelerin sonraki sıralamasını artan düzende gerçekleştirir.

Aşırı Yüklemeler

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

Bir dizideki öğelerin sonraki sıralamasını bir anahtara göre artan düzende gerçekleştirir.

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

Belirtilen bir karşılaştırıcıyı kullanarak öğelerin sonraki sıralamasını artan düzende gerçekleştirir.

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

Kaynak:
OrderBy.cs
Kaynak:
OrderBy.cs
Kaynak:
OrderBy.cs

Bir dizideki öğelerin sonraki sıralamasını bir anahtara göre artan düzende gerçekleştirir.

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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

Parametreler

source
IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement> Sıralanacak öğeleri içeren bir.

keySelector
Func<TSource,TKey>

Her öğeden anahtar ayıklamak için bir işlev.

Döndürülenler

Öğeleri IOrderedEnumerable<TElement> bir anahtara göre sıralanmış olan.

Özel durumlar

source veya keySelector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir dizideki öğelerin ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını ThenBy<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) gösterir.

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. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator veya C# içinde veya For Each Visual Basic'te kullanarak foreach nesne numaralandırılana kadar yürütülür.

Bir diziyi öğelerin değerlerine göre sıralamak için keySelectoriçin identity işlevini (x => xC# dilinde veya Function(x) x Visual Basic'te) belirtin.

ThenBy ve ThenByDescending aynı zamanda bu yöntemlerin dönüş türü olan türünü IOrderedEnumerable<TElement>genişletmek için tanımlanır. Bu tasarım, herhangi bir sayıda ThenBy veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi sağlar.

Not

' den devralındığındanIOrderedEnumerable<TElement>, , ThenByOrderByDescendingveya OrderByDescending çağrısının OrderBysonuçlarında veya ThenByDescendingöğesini çağırabilirsinizOrderBy.IEnumerable<T> Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralamayı tanıtır.

Bu yöntem, varsayılan karşılaştırıcıyı kullanarak anahtarları karşılaştırır Default.

Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir ifadeyle, iki öğenin anahtarları eşitse, öğelerin sırası korunur. Buna karşılık, kararsız sıralama aynı anahtara sahip öğelerin sırasını korumaz.

Sorgu ifadesi söz diziminde, ( orderby [first criterion], [second criterion] C#) veya Order By [first criterion], [second criterion] (Visual Basic) yan tümcesi çağrısına çevrilir ThenBy.

Ayrıca bkz.

Şunlara uygulanır

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

Kaynak:
OrderBy.cs
Kaynak:
OrderBy.cs
Kaynak:
OrderBy.cs

Belirtilen bir karşılaştırıcıyı kullanarak öğelerin sonraki sıralamasını artan düzende gerçekleştirir.

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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

Parametreler

source
IOrderedEnumerable<TSource>

IOrderedEnumerable<TElement> Sıralanacak öğeleri içeren bir.

keySelector
Func<TSource,TKey>

Her öğeden anahtar ayıklamak için bir işlev.

comparer
IComparer<TKey>

Anahtarları karşılaştırmak için bir IComparer<T> .

Döndürülenler

Öğeleri IOrderedEnumerable<TElement> bir anahtara göre sıralanmış olan.

Özel durumlar

source veya keySelector şeklindedir null.

Açıklamalar

Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator veya C# içinde veya For Each Visual Basic'te kullanarak foreach nesne numaralandırılana kadar yürütülür.

Bir diziyi öğelerin değerlerine göre sıralamak için keySelectoriçin identity işlevini (x => xC# dilinde veya Function(x) x Visual Basic'te) belirtin.

ThenBy ve ThenByDescending aynı zamanda bu yöntemlerin dönüş türü olan türünü IOrderedEnumerable<TElement>genişletmek için tanımlanır. Bu tasarım, herhangi bir sayıda ThenBy veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi sağlar.

Not

' den devralındığındanIOrderedEnumerable<TElement>, , ThenByOrderByDescendingveya OrderByDescending çağrısının OrderBysonuçlarında veya ThenByDescendingöğesini çağırabilirsinizOrderBy.IEnumerable<T> Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralamayı tanıtır.

ise comparernull, anahtarları karşılaştırmak için varsayılan karşılaştırıcı Default kullanılır.

Bu yöntem kararlı bir sıralama gerçekleştirir; diğer bir ifadeyle, iki öğenin anahtarları eşitse, öğelerin sırası korunur. Buna karşılık, kararsız sıralama aynı anahtara sahip öğelerin sırasını korumaz.

Şunlara uygulanır