Freigeben über


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>>)

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

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

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 Expression<TDelegate> , dessen Typargument einer der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben, der zu einem Expression<TDelegate>kompiliert wird.

Die ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) -Methode generiert eine MethodCallExpression , die den Aufruf ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) selbst als konstruierte generische Methode darstellt. Anschließend wird an MethodCallExpression die CreateQuery<TElement>(Expression) -Methode des übergeben, das IQueryProvider durch die Provider -Eigenschaft des source -Parameters dargestellt wird. Das Ergebnis des Aufrufs CreateQuery<TElement>(Expression) wird in typ IOrderedQueryable<T> umgewandelt und zurückgegeben.

Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die den Aufruf ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>) darstellt, hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass eine sekundäre Art der Elemente von source in absteigender Reihenfolge ausgeführt wird, basierend auf dem Schlüssel, der durch Aufrufen keySelector für jedes Element von sourceabgerufen wird. Alle zuvor eingerichteten Sortierreihenfolgen werden beibehalten.

Gilt für:

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

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

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

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 mithilfe ThenByDescending<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) eines benutzerdefinierten Vergleichs eine sekundäre Reihenfolge der Elemente in einer Sequenz in absteigender Reihenfolge ausgeführt wird.

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 Expression<TDelegate> , dessen Typargument einer der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben, der zu einem Expression<TDelegate>kompiliert wird.

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

Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die den Aufruf ThenBy<TSource,TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource,TKey>>, IComparer<TKey>) darstellt, hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass eine sekundäre Art der Elemente von source in absteigender Reihenfolge ausgeführt wird, basierend auf dem Schlüssel, der durch Aufrufen keySelector für jedes Element von sourceabgerufen wird. Alle zuvor eingerichteten Sortierreihenfolgen werden beibehalten. Der comparer Parameter wird verwendet, um Schlüsselwerte zu vergleichen.

Gilt für: