Lire en anglais

Partager via


Queryable.OrderByDescending Méthode

Définition

Trie les éléments d'une séquence dans l'ordre décroissant.

Surcharges

OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)

Trie les éléments d'une séquence dans l'ordre décroissant à l'aide d'un comparateur spécifié.

OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)

Trie les éléments d'une séquence dans l'ordre décroissant selon une clé.

OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Trie les éléments d'une séquence dans l'ordre décroissant à l'aide d'un comparateur spécifié.

C#
public static System.Linq.IOrderedQueryable<TSource> OrderByDescending<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
C#
public static System.Linq.IOrderedQueryable<TSource> OrderByDescending<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);

Paramètres de type

TSource

Le type des éléments de source.

TKey

Type de la clé retournée par la fonction représentée par keySelector.

Paramètres

source
IQueryable<TSource>

Séquence de valeurs à classer.

keySelector
Expression<Func<TSource,TKey>>

Fonction permettant d'extraire une clé d'un élément.

comparer
IComparer<TKey>

IComparer<T> pour comparer les clés.

Retours

IOrderedQueryable<T> dont les éléments sont triés dans l'ordre décroissant selon une clé.

Exceptions

source ou keySelector ou comparer a la valeur null.

Exemples

L’exemple de code suivant montre comment utiliser OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) pour trier les éléments d’une séquence dans l’ordre décroissant à l’aide d’un comparateur personnalisé.

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

    // Sort the decimal values in descending order
    // by using a custom comparer.
    IEnumerable<decimal> query =
        decimals.AsQueryable()
        .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
*/

Remarques

Cette méthode a au moins un paramètre de type Expression<TDelegate> dont l’argument type est l’un Func<T,TResult> des types. Pour ces paramètres, vous pouvez passer une expression lambda et elle sera compilée dans un Expression<TDelegate>.

La OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) méthode génère un MethodCallExpression qui représente l’appel OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) de lui-même en tant que méthode générique construite. Il passe ensuite le MethodCallExpression à la CreateQuery<TElement>(Expression) méthode du IQueryProvider représenté par la Provider propriété du source paramètre . Le résultat de l’appel CreateQuery<TElement>(Expression) est converti en type IOrderedQueryable<T> et retourné.

Le comportement de requête qui se produit à la suite de l’exécution d’une arborescence d’expressions qui représente l’appel OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) dépend de l’implémentation du type du source paramètre. Le comportement attendu est qu’il trie les éléments de source dans l’ordre décroissant, en fonction de la clé obtenue en appelant keySelector sur chaque élément de source. Le comparer paramètre est utilisé pour comparer des clés.

S’applique à

.NET 9 et autres versions
Produit Versions
.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 2.0, 2.1
UWP 10.0

OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

Trie les éléments d'une séquence dans l'ordre décroissant selon une clé.

C#
public static System.Linq.IOrderedQueryable<TSource> OrderByDescending<TSource,TKey> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);

Paramètres de type

TSource

Le type des éléments de source.

TKey

Type de la clé retournée par la fonction représentée par keySelector.

Paramètres

source
IQueryable<TSource>

Séquence de valeurs à classer.

keySelector
Expression<Func<TSource,TKey>>

Fonction permettant d'extraire une clé d'un élément.

Retours

IOrderedQueryable<T> dont les éléments sont triés dans l'ordre décroissant selon une clé.

Exceptions

source ou keySelector est null.

Remarques

Cette méthode a au moins un paramètre de type Expression<TDelegate> dont l’argument type est l’un Func<T,TResult> des types. Pour ces paramètres, vous pouvez passer une expression lambda et elle sera compilée dans un Expression<TDelegate>.

La OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) méthode génère un MethodCallExpression qui représente l’appel OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) de lui-même en tant que méthode générique construite. Il passe ensuite le MethodCallExpression à la CreateQuery<TElement>(Expression) méthode du IQueryProvider représenté par la Provider propriété du source paramètre . Le résultat de l’appel CreateQuery<TElement>(Expression) est converti en type IOrderedQueryable<T> et retourné.

Le comportement de requête qui se produit à la suite de l’exécution d’une arborescence d’expressions qui représente l’appel OrderByDescending<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) dépend de l’implémentation du type du source paramètre. Le comportement attendu est qu’il trie les éléments de source dans l’ordre décroissant, en fonction de la clé obtenue en appelant keySelector sur chaque élément de source.

S’applique à

.NET 9 et autres versions
Produit Versions
.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 2.0, 2.1
UWP 10.0