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

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

Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
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 bir anahtar ayıklama işlevi.

Döndürülenler

IOrderedEnumerable<TElement> Öğeleri 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. Hemen 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 türünü genişletmek IOrderedEnumerable<TElement>için tanımlanır. Bu yöntemlerden dönüş türü de bu şekildedir. Bu tasarım, istediğiniz sayıda veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar.

Not

IOrderedEnumerable<TElement>' den IEnumerable<T>devralındığından , OrderByDescendingThenByThenByDescendingveya OrderByDescending çağrısının sonuçlarında veya öğesini OrderByçağırabilirsinizOrderBy. Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralama sağlar.

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 öğe anahtarı 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 bir 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>)

Source:
OrderBy.cs
Source:
OrderBy.cs
Source:
OrderBy.cs

Belirtilen karşılaştırıcıyı kullanarak bir dizideki öğ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 bir anahtar ayıklama işlevi.

comparer
IComparer<TKey>

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

Döndürülenler

IOrderedEnumerable<TElement> Öğeleri 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. Hemen 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 türünü genişletmek IOrderedEnumerable<TElement>için tanımlanır. Bu yöntemlerden dönüş türü de bu şekildedir. Bu tasarım, istediğiniz sayıda veya ThenByDescending yöntemi uygulayarak birden çok sıralama ölçütü belirtmenizi ThenBy sağlar.

Not

IOrderedEnumerable<TElement>' den IEnumerable<T>devralındığından , OrderByDescendingThenByThenByDescendingveya OrderByDescending çağrısının sonuçlarında veya öğesini OrderByçağırabilirsinizOrderBy. Bunu yapmak, önceden oluşturulmuş sıralamayı yoksayan yeni bir birincil sıralama sağlar.

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 öğe anahtarı 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