Enumerable.ThenByDescending Yöntem

Tanım

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

Aşırı Yüklemeler

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

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

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

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

ThenByDescending<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 azalan düzende gerçekleştirir.

C#
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);

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 azalan düzende sıralanan bir.

Ö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.

Bu sıralama yöntemi, 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.

C# sorgu ifadesi söz diziminde yan orderby [first criterion], [second criterion] descending tümcesi çağrısına ThenByDescendingdönüşür.

Visual Basic sorgu ifadesi söz diziminde yan Order By [first criterion], [second criterion] Descending tümcesi çağrısına ThenByDescendingdönüşür.

Ayrıca bkz.

Şunlara uygulanır

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

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

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

C#
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
C#
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);

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 azalan düzende sıralanan bir.

Özel durumlar

source veya keySelector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, özel bir karşılaştırıcı kullanarak bir dizideki öğelerin azalan sırada ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) gösterir.

C#
public class CaseInsensitiveComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        return string.Compare(x, y, true);
    }
}

public static void ThenByDescendingEx1()
{
    string[] fruits = { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };

    // Sort the strings first ascending by their length and
    // then descending using a custom case insensitive comparer.
    IEnumerable<string> query =
        fruits
        .OrderBy(fruit => fruit.Length)
        .ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());

    foreach (string fruit in query)
    {
        Console.WriteLine(fruit);
    }
}

/*
    This code produces the following output:

    apPLe
    apple
    APple
    apPLE
    orange
    ORANGE
    baNanA
    BAnana
*/

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

.NET 9 ve diğer sürümler
Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0