Enumerable.OrderByDescending Metoda

Definicja

Sortuje elementy sekwencji w kolejności malejącej.

Przeciążenia

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Sortuje elementy sekwencji w kolejności malejącej zgodnie z kluczem.

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Sortuje elementy sekwencji w kolejności malejącej przy użyciu określonego porównania.

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

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

Sortuje elementy sekwencji w kolejności malejącej zgodnie z kluczem.

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

Parametry typu

TSource

Typ elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IEnumerable<TSource>

Sekwencja wartości do ustawienia w kolejności.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z 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.

Przykład tej metody można znaleźć w temacie OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>).

Dwie metody są definiowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, czyli typu zwracanego tej metody. Te dwie metody, a mianowicie ThenBy i ThenByDescending, umożliwiają określenie dodatkowych kryteriów sortowania w celu sortowania sekwencji. ThenBy a ThenByDescending także zwrócić element , co oznacza, że dowolna IOrderedEnumerable<TElement>liczba kolejnych wywołań do ThenBy lub ThenByDescending może zostać wykonana.

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 porównuje klucze przy użyciu domyślnego modułu porównującego 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 klauzula orderby descending (C#) lub Order By Descending (Visual Basic) tłumaczy się na wywołanie OrderByDescending.

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

OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

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

Sortuje elementy sekwencji w kolejności malejącej przy użyciu określonego porównania.

C#
public static System.Linq.IOrderedEnumerable<TSource> OrderByDescending<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
C#
public static System.Linq.IOrderedEnumerable<TSource> OrderByDescending<TSource,TKey> (this System.Collections.Generic.IEnumerable<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
IEnumerable<TSource>

Sekwencja wartości do ustawienia w kolejności.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z 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 przedstawia sposób OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) sortowania elementów sekwencji w kolejności malejącej przy użyciu funkcji transform i niestandardowego porównania.

C#
/// <summary>
/// This IComparer class sorts by the fractional part of the decimal number.
/// </summary>
public class SpecialComparer : IComparer<decimal>
{
    /// <summary>
    /// Compare two decimal numbers by their fractional parts.
    /// </summary>
    /// <param name="d1">The first decimal to compare.</param>
    /// <param name="d2">The second decimal to compare.</param>
    /// <returns>1 if the first decimal's fractional part
    /// is greater than the second decimal's fractional part,
    /// -1 if the first decimal's fractional
    /// part is less than the second decimal's fractional part,
    /// or the result of calling Decimal.Compare()
    /// if the fractional parts are equal.</returns>
    public int Compare(decimal d1, decimal d2)
    {
        decimal fractional1, fractional2;

        // Get the fractional part of the first number.
        try
        {
            fractional1 = decimal.Remainder(d1, decimal.Floor(d1));
        }
        catch (DivideByZeroException)
        {
            fractional1 = d1;
        }
        // Get the fractional part of the second number.
        try
        {
            fractional2 = decimal.Remainder(d2, decimal.Floor(d2));
        }
        catch (DivideByZeroException)
        {
            fractional2 = d2;
        }

        if (fractional1 == fractional2)
            return Decimal.Compare(d1, d2);
        else if (fractional1 > fractional2)
            return 1;
        else
            return -1;
    }
}

public static void OrderByDescendingEx1()
{
    List<decimal> decimals =
        new List<decimal> { 6.2m, 8.3m, 0.5m, 1.3m, 6.3m, 9.7m };

    IEnumerable<decimal> query =
        decimals.OrderByDescending(num =>
                                       num, new SpecialComparer());

    foreach (decimal num in query)
    {
        Console.WriteLine(num);
    }
}

/*
 This code produces the following output:

 9.7
 0.5
 8.3
 6.3
 1.3
 6.2
*/

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.

Dwie metody są definiowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, czyli typu zwracanego tej metody. Te dwie metody, a mianowicie ThenBy i ThenByDescending, umożliwiają określenie dodatkowych kryteriów sortowania w celu sortowania sekwencji. ThenBy a ThenByDescending także zwrócić element , co oznacza, że dowolna IOrderedEnumerable<TElement>liczba kolejnych wywołań do ThenBy lub ThenByDescending może zostać wykonana.

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.

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