Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Enumerable.ThenByDescending<TSource, TKey>-Methode: (IOrderedEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>)

 

Veröffentlicht: Oktober 2016

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

Namespace:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IOrderedEnumerable<TSource> ThenByDescending<TSource, TKey>(
	this IOrderedEnumerable<TSource> source,
	Func<TSource, TKey> keySelector,
	IComparer<TKey> comparer
)

Parameter

source
Type: System.Linq.IOrderedEnumerable<TSource>

Ein IOrderedEnumerable<TElement> mit den zu sortierenden Elementen.

keySelector
Type: System.Func<TSource, TKey>

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

comparer
Type: System.Collections.Generic.IComparer<TKey>

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

Rückgabewert

Type: System.Linq.IOrderedEnumerable<TSource>

Ein IOrderedEnumerable<TElement> dessen Elemente in absteigender Reihenfolge nach einem Schlüssel sortiert werden.

Typparameter

TSource

Der Typ der Elemente von source.

TKey

Der Typ des von keySelector zurückgegebenen Schlüssels.

Exception Condition
ArgumentNullException

source oder keySelector ist null.

Diese Methode wird mit verzögerter Ausführung implementiert. Die sofortige ist der Rückgabewert ein Objekt, das alle Informationen gespeichert, die zum Ausführen der Aktion erforderlich ist. Die von dieser Methode dargestellte Abfrage wird nicht ausgeführt, bis das Objekt aufgelistet wird, entweder durch Aufrufen der GetEnumerator -Methode direkt oder mithilfe von foreach in Visual C# oder For Each in Visual Basic.

Um eine Sequenz nach den Werten der Elemente selbst zu sortieren, geben Sie die Identity-Funktion (x => x in Visual C# oder Function(x) x in Visual Basic) für keySelector.

ThenBy und ThenByDescending sind definiert, um den Typ erweitern IOrderedEnumerable<TElement>, dies ist auch der Rückgabetyp dieser Methoden. Dieser Entwurf ermöglicht es Ihnen, mehrere Sortierkriterien angeben, indem Sie die Anwendung eine beliebige Anzahl von ThenBy oder ThenByDescending Methoden.

System_CAPS_noteHinweis

Da IOrderedEnumerable<TElement> erbt von IEnumerable<T>, rufen Sie OrderBy oder OrderByDescending auf die Ergebnisse eines Aufrufs von OrderBy, OrderByDescending, ThenBy oder ThenByDescending. Auf diese Weise führt eine neue primäre Sortierung, die die zuvor festgelegte Sortierung ignoriert.

Wenn comparer ist null, der Standardvergleich Default zum Vergleichen von Schlüsseln verwendet wird.

Diese Methode führt eine stabile Sortierung. Das heißt, ist die Schlüssel der zwei Elemente gleich sind, die Reihenfolge der Elemente beibehalten. Im Gegensatz dazu behält eine instabile Sortierung die Reihenfolge der Elemente nicht den gleichen Schlüssel verfügen.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie ThenByDescending<TSource, TKey>(IOrderedEnumerable<TSource>, Func<TSource, TKey>, IComparer<TKey>) um eine nachfolgende Sortierung der Elemente in einer Sequenz in absteigender Reihenfolge nach der Verwendung eines benutzerdefinierten Vergleichs durchfü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
        .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
*/

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: