Enumerable.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 sekvenci v sestupném pořadí.
Přetížení
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Provede následné řazení prvků v sekvenci v sestupném pořadí podle klíče. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Provede následné řazení prvků v sekvenci v sestupném pořadí pomocí zadaného porovnávače. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Zdroj:
- OrderBy.cs
- Zdroj:
- OrderBy.cs
- Zdroj:
- OrderBy.cs
Provede následné řazení prvků v sekvenci v sestupném pořadí podle klíče.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(System::Linq::IOrderedEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> ThenByDescending<TSource,TKey> (this System.Linq.IOrderedEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IOrderedEnumerable(Of TSource)
Parametry typu
- TSource
Typ elementů .source
- TKey
Typ klíče vráceného nástrojem keySelector
.
Parametry
- source
- IOrderedEnumerable<TSource>
Objekt IOrderedEnumerable<TElement> obsahující prvky, které se mají seřadit.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč z každého prvku.
Návraty
Objekt IOrderedEnumerable<TElement> , jehož prvky jsou seřazeny sestupně podle klíče.
Výjimky
source
nebo keySelector
je null
.
Poznámky
Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou není proveden, dokud objekt není výčet buď voláním jeho GetEnumerator
metody přímo, nebo pomocí foreach
v jazyce C# nebo For Each
v jazyce Visual Basic.
Pokud chcete pořadí pořadí podle hodnot samotných prvků, zadejte funkci identity (x => x
v jazyce C# nebo Function(x) x
Visual Basic) pro keySelector
.
ThenBy a ThenByDescending jsou definovány pro rozšíření typu IOrderedEnumerable<TElement>, což je také návratový typ těchto metod. Tento návrh umožňuje zadat více kritérií řazení použitím libovolného ThenBy počtu metod nebo ThenByDescending .
Poznámka
Protože IOrderedEnumerable<TElement> dědí z IEnumerable<T>, můžete volat OrderBy nebo OrderByDescending na výsledky volání OrderBy, OrderByDescendingThenBy nebo ThenByDescending. Tím se zavede nové primární řazení, které ignoruje dříve vytvořené pořadí.
Tato metoda řazení porovnává klíče pomocí výchozího porovnávače Default.
Tato metoda provádí stabilní řazení; to znamená, že pokud jsou klíče dvou prvků stejné, pořadí prvků je zachováno. Naproti tomu nestabilní řazení nezachová pořadí prvků, které mají stejný klíč.
V syntaxi výrazu dotazu jazyka C# se orderby [first criterion], [second criterion] descending
klauzule překládá na vyvolání výrazu ThenByDescending.
V syntaxi výrazu dotazu jazyka Visual Basic se Order By [first criterion], [second criterion] Descending
klauzule překládá na vyvolání výrazu ThenByDescending.
Viz také
Platí pro
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Zdroj:
- OrderBy.cs
- Zdroj:
- OrderBy.cs
- Zdroj:
- OrderBy.cs
Provede následné řazení prvků v sekvenci v sestupném pořadí pomocí zadaného porovnávače.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IOrderedEnumerable<TSource> ^ ThenByDescending(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);
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);
static member ThenByDescending : System.Linq.IOrderedEnumerable<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function ThenByDescending(Of TSource, TKey) (source As IOrderedEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IComparer(Of TKey)) As IOrderedEnumerable(Of TSource)
Parametry typu
- TSource
Typ elementů .source
- TKey
Typ klíče vráceného nástrojem keySelector
.
Parametry
- source
- IOrderedEnumerable<TSource>
Objekt IOrderedEnumerable<TElement> obsahující prvky, které se mají seřadit.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč z každého prvku.
- comparer
- IComparer<TKey>
An IComparer<T> pro porovnání klíčů.
Návraty
Objekt IOrderedEnumerable<TElement> , jehož prvky jsou seřazeny sestupně podle klíče.
Výjimky
source
nebo keySelector
je null
.
Příklady
Následující příklad kódu ukazuje, jak pomocí ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) vlastního porovnávače provést sekundární řazení prvků v sekvenci v sestupném pořadí.
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
*/
' This class provides a custom implementation of the Compare() method.
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 by their length and then
' by using a custom "case insensitive" comparer.
Dim query As IEnumerable(Of String) =
fruits _
.OrderBy(Function(fruit) fruit.Length) _
.ThenByDescending(Function(fruit) fruit, New CaseInsensitiveComparer())
' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
output.AppendLine(fruit)
Next
Console.WriteLine(output.ToString())
End Sub
' This code produces the following output:
' apPLe
' apple
' APple
' apPLE
' orange
' ORANGE
' baNanA
' BAnana
Poznámky
Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou není proveden, dokud objekt není výčet buď voláním jeho GetEnumerator
metody přímo, nebo pomocí foreach
v jazyce C# nebo For Each
v jazyce Visual Basic.
Pokud chcete pořadí pořadí podle hodnot samotných prvků, zadejte funkci identity (x => x
v jazyce C# nebo Function(x) x
Visual Basic) pro keySelector
.
ThenBy a ThenByDescending jsou definovány pro rozšíření typu IOrderedEnumerable<TElement>, což je také návratový typ těchto metod. Tento návrh umožňuje zadat více kritérií řazení použitím libovolného ThenBy počtu metod nebo ThenByDescending .
Poznámka
Protože IOrderedEnumerable<TElement> dědí z IEnumerable<T>, můžete volat OrderBy nebo OrderByDescending na výsledky volání OrderBy, OrderByDescendingThenBy nebo ThenByDescending. Tím se zavede nové primární řazení, které ignoruje dříve vytvořené pořadí.
Pokud comparer
je null
, použije se k porovnání klíčů výchozí porovnávače Default .
Tato metoda provádí stabilní řazení; to znamená, že pokud jsou klíče dvou prvků stejné, pořadí prvků je zachováno. Naproti tomu nestabilní řazení nezachová pořadí prvků, které mají stejný klíč.