Enumerable.ThenByDescending Yöntem

Tanım

Öğelerin sırayla azalan düzende sıralanmış bir sıralamasını gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in descending order.

Aşırı Yüklemeler

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

Bir anahtara göre bir dizideki öğelerin sonraki sıralamasını azalan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in descending order, according to a key.

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

Belirtilen karşılaştırıcıyı kullanarak dizideki öğelerin sonraki sıralamasını azalan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in descending order by using a specified comparer.

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

Bir anahtara göre bir dizideki öğelerin sonraki sıralamasını azalan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in descending order, according to a key.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(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 azalan düzende sıralanır.An IOrderedEnumerable<TElement> whose elements are sorted in descending order 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.

Bu sıralama yöntemi, varsayılan karşılaştırıcı kullanarak anahtarları karşılaştırır Default .This sorting 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.

Visual C# sorgu ifadesi sözdiziminde, orderby [first criterion], [second criterion] descending yan tümce bir çağrısına çevrilir ThenByDescending .In Visual C# query expression syntax, an orderby [first criterion], [second criterion] descending clause translates to an invocation of ThenByDescending.

Sorgu ifadesi söz dizimi Visual Basic, Order By [first criterion], [second criterion] Descending yan tümce bir çağrısına çevrilir ThenByDescending .In Visual Basic query expression syntax, an Order By [first criterion], [second criterion] Descending clause translates to an invocation of ThenByDescending.

Ayrıca bkz.

Şunlara uygulanır

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

Belirtilen karşılaştırıcıyı kullanarak dizideki öğelerin sonraki sıralamasını azalan sırada gerçekleştirir.Performs a subsequent ordering of the elements in a sequence in descending order by using a specified comparer.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
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);
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);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(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 azalan düzende sıralanır.An IOrderedEnumerable<TElement> whose elements are sorted in descending order according to a key.

Özel durumlar

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

Örnekler

Aşağıdaki kod örneği, ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) özel bir karşılaştırıcı kullanarak bir dizideki öğelerin azalan düzende ikincil sıralamasını gerçekleştirmek için nasıl kullanılacağını gösterir.The following code example demonstrates how to use ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) to perform a secondary ordering of the elements in a sequence in descending order by using a custom comparer.

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
*/
' This class provides a custom implementation of the Compare() method.
Class CaseInsensitiveComparer
    Implements IComparer(Of String)

    Function Compare(ByVal x As String, ByVal y As String) As Integer _
    Implements IComparer(Of String).Compare

        ' Compare values and ignore case.
        Return String.Compare(x, y, True)
    End Function
End Class

Sub ThenByDescendingEx1()
    Dim fruits() As String =
    {"apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE"}

    ' Sort the strings first by their length and then 
    ' by using a custom "case insensitive" comparer.
    Dim query As IEnumerable(Of String) =
    fruits _
    .OrderBy(Function(fruit) fruit.Length) _
    .ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())

    ' 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())
End Sub

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