Queryable.ThenByDescending Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Effectue un classement ultérieur des éléments dans une séquence dans l’ordre décroissant.
Surcharges
| Nom | Description |
|---|---|
| ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) |
Effectue un classement ultérieur des éléments dans une séquence dans l’ordre décroissant, en fonction d’une clé. |
| ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) |
Effectue un classement ultérieur des éléments dans une séquence dans l’ordre décroissant à l’aide d’un comparateur spécifié. |
ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)
Effectue un classement ultérieur des éléments dans une séquence dans l’ordre décroissant, en fonction d’une clé.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedQueryable<TSource> ^ ThenByDescending(System::Linq::IOrderedQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector);
public static System.Linq.IOrderedQueryable<TSource> ThenByDescending<TSource,TKey>(this System.Linq.IOrderedQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);
static member ThenByDescending : System.Linq.IOrderedQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> -> System.Linq.IOrderedQueryable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey))) As IOrderedQueryable(Of TSource)
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par la fonction représentée par keySelector.
Paramètres
- source
- IOrderedQueryable<TSource>
Qui IOrderedQueryable<T> contient des éléments à trier.
- keySelector
- Expression<Func<TSource,TKey>>
Fonction permettant d’extraire une clé de chaque élément.
Retours
Dont IOrderedQueryable<T> les éléments sont triés dans l’ordre décroissant en fonction d’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 de type est l’un des Func<T,TResult> types. Pour ces paramètres, vous pouvez passer une expression lambda et elle sera compilée à un Expression<TDelegate>.
La méthode ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) génère une MethodCallExpression qui représente l’appel de ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) elle-même en tant que méthode générique construite. Il transmet ensuite la MethodCallExpression à la méthode CreateQuery<TElement>(Expression) de l'IQueryProvider représentée par la propriété Provider du paramètre source. Le résultat de l’appel CreateQuery<TElement>(Expression) est casté en type IOrderedQueryable<T> et retourné.
Le comportement de requête qui se produit suite à l’exécution d’une arborescence d’expressions qui représente l’appel de ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) dépend de l’implémentation du type du paramètre source. Le comportement attendu est qu’il effectue un type secondaire des éléments de source l’ordre décroissant, en fonction de la clé obtenue en appelant keySelector chaque élément de source. Tous les ordres de tri précédemment établis sont conservés.
S’applique à
ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)
Effectue un classement ultérieur des éléments dans une séquence dans l’ordre décroissant à l’aide d’un comparateur spécifié.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedQueryable<TSource> ^ ThenByDescending(System::Linq::IOrderedQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedQueryable<TSource> ThenByDescending<TSource,TKey>(this System.Linq.IOrderedQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
static member ThenByDescending : System.Linq.IOrderedQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedQueryable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), comparer As IComparer(Of TKey)) As IOrderedQueryable(Of TSource)
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par la keySelector fonction.
Paramètres
- source
- IOrderedQueryable<TSource>
Qui IOrderedQueryable<T> contient des éléments à trier.
- keySelector
- Expression<Func<TSource,TKey>>
Fonction permettant d’extraire une clé de chaque élément.
- comparer
- IComparer<TKey>
Pour IComparer<T> comparer les clés.
Retours
Collection dont les éléments sont triés dans l’ordre décroissant en fonction d’une clé.
Exceptions
source
keySelector ou comparer est null.
Exemples
L’exemple de code suivant montre comment effectuer ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) un classement secondaire des éléments d’une séquence dans l’ordre décroissant à l’aide d’un comparateur personnalisé.
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.AsQueryable()
.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
*/
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 ascending by their length and
' then descending by using a custom case insensitive comparer.
Dim query = fruits.AsQueryable() _
.OrderBy(Function(fruit) fruit.Length) _
.ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
output.AppendLine(fruit)
Next
' Display the results.
MsgBox(output.ToString())
End Sub
' This code produces the following output:
' apPLe
' apple
' APple
' apPLE
' orange
' ORANGE
' baNanA
' BAnana
Remarques
Cette méthode a au moins un paramètre de type Expression<TDelegate> dont l’argument de type est l’un des Func<T,TResult> types. Pour ces paramètres, vous pouvez passer une expression lambda et elle sera compilée à un Expression<TDelegate>.
La méthode ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) génère une MethodCallExpression qui représente l’appel de ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) elle-même en tant que méthode générique construite. Il transmet ensuite la MethodCallExpression à la méthode CreateQuery<TElement>(Expression) de l'IQueryProvider représentée par la propriété Provider du paramètre source. Le résultat de l’appel CreateQuery<TElement>(Expression) est casté en type IOrderedQueryable<T> et retourné.
Le comportement de requête qui se produit suite à l’exécution d’une arborescence d’expressions qui représente l’appel de ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) dépend de l’implémentation du type du paramètre source. Le comportement attendu est qu’il effectue un type secondaire des éléments de source l’ordre décroissant, en fonction de la clé obtenue en appelant keySelector chaque élément de source. Tous les ordres de tri précédemment établis sont conservés. Le comparer paramètre est utilisé pour comparer les valeurs de clé.