Queryable.ThenByDescending Methode

Definition

Führt eine nachfolgende Sortierung der Elemente in einer Sequenz in absteigender Reihenfolge durch

Überlädt

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)

Führt eine nachfolgende Sortierung der Elemente in einer Sequenz in absteigender Reihenfolge nach einem Schlüssel durch

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)

Führt mithilfe eines angegebenen Vergleichs eine nachfolgende Sortierung der Elemente in einer Sequenz in absteigender Reihenfolge durch

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>)

Führt eine nachfolgende Sortierung der Elemente in einer Sequenz in absteigender Reihenfolge nach einem Schlüssel durch

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)

Typparameter

TSource

Der Typ der Elemente von source.

TKey

Der Typ des Schlüssels, der von der von keySelector dargestellten Funktion zurückgegeben wird.

Parameter

source
IOrderedQueryable<TSource>

Ein IOrderedQueryable<T> mit den zu sortierenden Elementen.

keySelector
Expression<Func<TSource,TKey>>

Eine Funktion zum Extrahieren eines Schlüssels aus jedem Element.

Gibt zurück

IOrderedQueryable<TSource>

Ein IOrderedQueryable<T>, dessen Elemente in absteigender Reihenfolge nach einem Schlüssel sortiert werden

Ausnahmen

source oder keySelector ist null.

Hinweise

Diese Methode verfügt über mindestens einen Parameter vom Typ, dessen Typargument Expression<TDelegate> eine der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben und an einen Expression<TDelegate>.

Die ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) Methode generiert eine MethodCallExpression , die das Aufrufen ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery<TElement>(Expression) Provider Eigenschaft des source Parameters übergeben. Das Ergebnis des Aufrufens CreateQuery<TElement>(Expression) wird in den Typ IOrderedQueryable<T> und zurückgegeben.

Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) des source Parameters ab. Das erwartete Verhalten besteht darin, dass es eine sekundäre Sortierung der Elemente source in absteigender Reihenfolge ausführt, basierend auf dem Schlüssel, der durch Aufrufen keySelector jedes Elements sourceabgerufen wird. Alle zuvor eingerichteten Sortierreihenfolgen bleiben erhalten.

Gilt für

ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>)

Führt mithilfe eines angegebenen Vergleichs eine nachfolgende Sortierung der Elemente in einer Sequenz in absteigender Reihenfolge durch

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)

Typparameter

TSource

Der Typ der Elemente von source.

TKey

Der Typ des Schlüssels, der von der keySelector-Funktion zurückgegeben wird.

Parameter

source
IOrderedQueryable<TSource>

Ein IOrderedQueryable<T> mit den zu sortierenden Elementen.

keySelector
Expression<Func<TSource,TKey>>

Eine Funktion zum Extrahieren eines Schlüssels aus jedem Element.

comparer
IComparer<TKey>

Ein IComparer<T> zum Vergleichen von Schlüsseln.

Gibt zurück

IOrderedQueryable<TSource>

Eine Auflistung, deren Elemente in absteigender Reihenfolge nach einem Schlüssel sortiert werden.

Ausnahmen

source oder keySelector oder comparer ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) Sie mithilfe eines benutzerdefinierten Vergleichs eine sekundäre Reihenfolge der Elemente in einer Sequenz in absteigender Reihenfolge ausführen.

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

Hinweise

Diese Methode verfügt über mindestens einen Parameter vom Typ, dessen Typargument Expression<TDelegate> eine der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben und an einen Expression<TDelegate>.

Die ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) Methode generiert eine MethodCallExpression , die das Aufrufen ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery<TElement>(Expression) Provider Eigenschaft des source Parameters übergeben. Das Ergebnis des Aufrufens CreateQuery<TElement>(Expression) wird in den Typ IOrderedQueryable<T> und zurückgegeben.

Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) des source Parameters ab. Das erwartete Verhalten besteht darin, dass es eine sekundäre Sortierung der Elemente source in absteigender Reihenfolge ausführt, basierend auf dem Schlüssel, der durch Aufrufen keySelector jedes Elements sourceabgerufen wird. Alle zuvor eingerichteten Sortierreihenfolgen bleiben erhalten. Der comparer Parameter wird verwendet, um Schlüsselwerte zu vergleichen.

Gilt für