Enumerable.ThenByDescending Metoda

Definicja

Wykonuje kolejność elementów w kolejności malejącej.

Przeciążenia

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

Wykonuje kolejną kolejność elementów w kolejności malejącej zgodnie z kluczem.

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

Wykonuje kolejność elementów w kolejności malejącej przy użyciu określonego porównania.

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

Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs

Wykonuje kolejną kolejność elementów w kolejności malejącej zgodnie z kluczem.

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

Parametry typu

TSource

Typ elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IOrderedEnumerable<TSource>

Element IOrderedEnumerable<TElement> zawierający elementy do sortowania.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z każdego elementu.

Zwraca

Element IOrderedEnumerable<TElement> , którego elementy są sortowane w kolejności malejącej zgodnie z kluczem.

Wyjątki

source lub keySelector to null.

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony, wywołując metodę GetEnumerator bezpośrednio lub używając w foreach języku C# lub For Each w Visual Basic.

Aby zamówić sekwencję według samych wartości elementów, określ funkcję identity (x => x w języku C# lub Function(x) x Visual Basic) dla elementu keySelector.

ThenBy i ThenByDescending są zdefiniowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest również zwracany typ tych metod. Ten projekt umożliwia określenie wielu kryteriów sortowania, stosując dowolną ThenBy liczbę metod lub ThenByDescending .

Uwaga

Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>klasy , można wywołać wywołanie OrderBy lub OrderByDescending na podstawie wyników wywołania metody OrderBy, OrderByDescendingThenBy lub ThenByDescending. Ten sposób wprowadza nowe podstawowe ustawianie kolejności, które ignoruje ustanowiony wcześniej sposób ustawiania.

Ta metoda sortowania porównuje klucze przy użyciu domyślnego porównywacza Default.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klawisze dwóch elementów są równe, kolejność elementów jest zachowywana. Z drugiej strony, niestabilne sortowanie nie pozwala zachować kolejności elementów, które mają ten sam klucz.

W składni wyrażenia zapytania języka C# klauzula orderby [first criterion], [second criterion] descending tłumaczy się na wywołanie ThenByDescending.

W składni wyrażenia zapytania języka Visual Basic klauzula Order By [first criterion], [second criterion] Descending tłumaczy się na wywołanie ThenByDescendingelementu .

Zobacz też

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.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>)

Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs

Wykonuje kolejność elementów w kolejności malejącej przy użyciu określonego porównania.

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);

Parametry typu

TSource

Typ elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IOrderedEnumerable<TSource>

Element IOrderedEnumerable<TElement> zawierający elementy do sortowania.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z każdego elementu.

comparer
IComparer<TKey>

Element do IComparer<T> porównywania kluczy.

Zwraca

Element IOrderedEnumerable<TElement> , którego elementy są sortowane w kolejności malejącej zgodnie z kluczem.

Wyjątki

source lub keySelector to null.

Przykłady

Poniższy przykład kodu pokazuje, jak używać ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) do wykonywania pomocniczej kolejności elementów w kolejności malejącej przy użyciu niestandardowego porównania.

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
*/

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony, wywołując metodę GetEnumerator bezpośrednio lub używając w foreach języku C# lub For Each w Visual Basic.

Aby zamówić sekwencję według samych wartości elementów, określ funkcję identity (x => x w języku C# lub Function(x) x Visual Basic) dla elementu keySelector.

ThenBy i ThenByDescending są zdefiniowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest również zwracany typ tych metod. Ten projekt umożliwia określenie wielu kryteriów sortowania, stosując dowolną ThenBy liczbę metod lub ThenByDescending .

Uwaga

Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>klasy , można wywołać wywołanie OrderBy lub OrderByDescending na podstawie wyników wywołania metody OrderBy, OrderByDescendingThenBy lub ThenByDescending. Ten sposób wprowadza nowe podstawowe ustawianie kolejności, które ignoruje ustanowiony wcześniej sposób ustawiania.

Jeśli comparer jest to null, domyślny moduł porównujący jest używany do porównywania Default kluczy.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klawisze dwóch elementów są równe, kolejność elementów jest zachowywana. Z drugiej strony, niestabilne sortowanie nie pozwala zachować kolejności elementów, które mają ten sam klucz.

Dotyczy

.NET 9 i inne wersje
Produkt Wersje
.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