Queryable.ThenByDescending Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Provede následné řazení prvků v posloupnosti v sestupném pořadí.
Přetížení
ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) |
Provede následné řazení prvků v posloupnosti v sestupném pořadí podle klíče. |
ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) |
Provede následné řazení prvků v posloupnosti v sestupném pořadí pomocí zadaného porovnávače. |
ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Provede následné řazení prvků v posloupnosti v sestupném pořadí podle klíče.
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)
Parametry typu
- TSource
Typ prvků objektu source
.
- TKey
Typ klíče vrácený funkcí reprezentovanou funkcí keySelector
.
Parametry
- source
- IOrderedQueryable<TSource>
Obsahuje IOrderedQueryable<T> prvky, které se mají seřadit.
- keySelector
- Expression<Func<TSource,TKey>>
Funkce, která extrahuje klíč z každého prvku.
Návraty
Objekt IOrderedQueryable<T> , jehož prvky jsou seřazeny sestupně podle klíče.
Výjimky
source
nebo keySelector
je null
.
Poznámky
Tato metoda má alespoň jeden parametr typu Expression<TDelegate> , jehož argument typu je jedním z Func<T,TResult> typů. Pro tyto parametry můžete předat výraz lambda, který se zkompiluje do Expression<TDelegate>.
Metoda ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) vygeneruje MethodCallExpression , který představuje volání ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) sebe sama jako konstruované obecné metody. Pak předá MethodCallExpressionCreateQuery<TElement>(Expression) metodě parametru IQueryProvider reprezentované Provider vlastností source
. Výsledek volání CreateQuery<TElement>(Expression) je přetypován na typ IOrderedQueryable<T> a vrácen.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazu, který představuje volání ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) , závisí na implementaci typu parametru source
. Očekávané chování je, že provádí sekundární řazení prvků source
v sestupném pořadí na základě klíče získaného vyvoláním keySelector
každého prvku .source
Zachovají se všechna dříve vytvořená pořadí řazení.
Platí pro
ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
- Zdroj:
- Queryable.cs
Provede následné řazení prvků v posloupnosti v sestupném pořadí pomocí zadaného porovnávače.
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);
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)
Parametry typu
- TSource
Typ prvků objektu source
.
- TKey
Typ klíče, který funkce vrátí keySelector
.
Parametry
- source
- IOrderedQueryable<TSource>
Obsahuje IOrderedQueryable<T> prvky, které se mají seřadit.
- keySelector
- Expression<Func<TSource,TKey>>
Funkce, která extrahuje klíč z každého prvku.
- comparer
- IComparer<TKey>
K IComparer<T> porovnání klíčů.
Návraty
Kolekce, jejíž prvky jsou seřazeny sestupně podle klíče.
Výjimky
source
nebo keySelector
comparer
je null
.
Příklady
Následující příklad kódu ukazuje, jak použít ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) k provedení sekundárního pořadí prvků v sekvenci v sestupném pořadí pomocí vlastní porovnávače.
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
Poznámky
Tato metoda má alespoň jeden parametr typu Expression<TDelegate> , jehož argument typu je jedním z Func<T,TResult> typů. Pro tyto parametry můžete předat výraz lambda, který se zkompiluje do Expression<TDelegate>.
Metoda ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) vygeneruje MethodCallExpression , který představuje volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) sebe sama jako konstruované obecné metody. Pak předá MethodCallExpressionCreateQuery<TElement>(Expression) metodě parametru IQueryProvider reprezentované Provider vlastností source
. Výsledek volání CreateQuery<TElement>(Expression) je přetypován na typ IOrderedQueryable<T> a vrácen.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazu, který představuje volání ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) , závisí na implementaci typu parametru source
. Očekávané chování je, že provádí sekundární řazení prvků source
v sestupném pořadí na základě klíče získaného vyvoláním keySelector
každého prvku .source
Zachovají se všechna dříve vytvořená pořadí řazení. Parametr comparer
se používá k porovnání hodnot klíčů.