Enumerable.ThenByDescending Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wykonuje kolejną kolejność elementów w sekwencji w kolejności malejącej.
Przeciążenia
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>) |
Wykonuje kolejną kolejność elementów w sekwencji w kolejności malejącej zgodnie z kluczem. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) |
Wykonuje kolejną kolejność elementów w sekwencji w kolejności malejącej przy użyciu określonego modułu porównującego. |
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>)
- Źródło:
- OrderBy.cs
- Źródło:
- OrderBy.cs
- Źródło:
- OrderBy.cs
Wykonuje kolejną kolejność elementów w sekwencji w kolejności malejącej zgodnie z kluczem.
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ów elementu source
.
- TKey
Typ klucza zwróconego przez keySelector
.
Parametry
- source
- IOrderedEnumerable<TSource>
Element IOrderedEnumerable<TElement> zawierający elementy do sortowania.
- keySelector
- Func<TSource,TKey>
Funkcja wyodrębniania klucza z każdego elementu.
Zwraca
Element IOrderedEnumerable<TElement> , którego elementy są sortowane w kolejności malejącej zgodnie z kluczem.
Wyjątki
source
lub keySelector
ma wartość 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 wyliczone przez wywołanie metody GetEnumerator
bezpośrednio lub przy użyciu foreach
języka C# lub For Each
w Visual Basic.
Aby uporządkować sekwencję według samych wartości elementów, określ funkcję tożsamości (x => x
w języku C# lub Function(x) x
Visual Basic) dla elementu keySelector
.
ThenBy i ThenByDescending są zdefiniowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest również zwracany typ tych metod. Ten projekt umożliwia określenie wielu kryteriów sortowania przez zastosowanie dowolnej liczby ThenBy metod lub ThenByDescending .
Uwaga
Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>metody , można wywołać OrderBy metodę lub OrderByDescending na wynikach 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 sortowania porównuje klucze przy użyciu domyślnego modułu Defaultporównującego .
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 języka C# klauzula orderby [first criterion], [second criterion] descending
przekłada się na wywołanie ThenByDescendingelementu .
W składni wyrażenia zapytania języka Visual Basic klauzula Order By [first criterion], [second criterion] Descending
przekłada się na wywołanie ThenByDescendingelementu .
Zobacz też
Dotyczy
ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Źródło:
- OrderBy.cs
- Źródło:
- OrderBy.cs
- Źródło:
- OrderBy.cs
Wykonuje kolejną kolejność elementów w sekwencji w kolejności malejącej przy użyciu określonego modułu porównującego.
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ów elementu source
.
- TKey
Typ klucza zwróconego przez keySelector
.
Parametry
- source
- IOrderedEnumerable<TSource>
Element IOrderedEnumerable<TElement> zawierający elementy do sortowania.
- keySelector
- Func<TSource,TKey>
Funkcja wyodrębniania klucza z każdego elementu.
- comparer
- IComparer<TKey>
Element IComparer<T> do 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
ma wartość null
.
Przykłady
W poniższym przykładzie kodu pokazano, jak wykonać ThenByDescending<TSource,TKey>(IOrderedEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>) kolejność pomocniczą elementów w kolejności malejącej przy użyciu niestandardowego modułu porównującego.
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
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 wyliczone przez wywołanie metody GetEnumerator
bezpośrednio lub przy użyciu foreach
języka C# lub For Each
w Visual Basic.
Aby uporządkować sekwencję według samych wartości elementów, określ funkcję tożsamości (x => x
w języku C# lub Function(x) x
Visual Basic) dla elementu keySelector
.
ThenBy i ThenByDescending są zdefiniowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest również zwracany typ tych metod. Ten projekt umożliwia określenie wielu kryteriów sortowania przez zastosowanie dowolnej liczby ThenBy metod lub ThenByDescending .
Uwaga
Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>metody , można wywołać OrderBy metodę lub OrderByDescending na wynikach 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
parametr ma null
wartość , domyślny moduł Default porównujący jest używany do porównywania 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.
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla