(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

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

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

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
)

Typparameter

TSource

Der Typ der Elemente von source.

TKey

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

Parameter

source
Typ: System.Linq.IOrderedEnumerable<TSource>
Ein IOrderedEnumerable<TElement> mit den zu sortierenden Elementen.
keySelector
Typ: System.Func<TSource, TKey>
Eine Funktion zum Extrahieren eines Schlüssels aus jedem Element.
comparer
Typ: System.Collections.Generic.IComparer<TKey>
Ein IComparer<T> zum Vergleichen von Schlüsseln.

Rückgabewert

Typ: System.Linq.IOrderedEnumerable<TSource>
Ein IOrderedEnumerable<TElement>, dessen Elemente in absteigender Reihenfolge nach einem Schlüssel sortiert werden.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IOrderedEnumerable<TSource> aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter Erweiterungsmethoden (Visual Basic) und Erweiterungsmethoden (C#-Programmierhandbuch).

AusnahmeBedingung
ArgumentNullException

source oder keySelector ist null.

Diese Methode wird mit verzögerter Ausführung implementiert. Der Wert der sofortigen Rückgabe ist ein Objekt, in dem alle zum Ausführen der Aktion erforderlichen Informationen gespeichert werden. Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch den direkten Aufruf der zugehörigen GetEnumerator-Methode oder mithilfe von foreach in Visual C# oder For Each in Visual Basic aufgelistet wird.

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

ThenBy und ThenByDescending sind definiert, um den Typ IOrderedEnumerable<TElement> zu erweitern, der auch der Rückgabetyp dieser Methoden ist. Mithilfe dieses Entwurfs können Sie mehrere Sortierkriterien angeben, indem Sie eine beliebige Anzahl von ThenBy-Methoden oder ThenByDescending-Methoden anwenden.

HinweisHinweis

Weil IOrderedEnumerable<TElement> von IEnumerable<T> erbt, können Sie OrderBy oder OrderByDescending für die Ergebnisse eines Aufrufs von OrderBy, OrderByDescending, ThenBy oder ThenByDescending aufrufen. Hierdurch erfolgt eine neue primäre Sortierung, die die zuvor festgelegte Sortierung ignoriert.

Wenn comparernull ist, werden Schlüssel mithilfe des Standardvergleichs Default verglichen.

Diese Methode führt eine stabile Sortierung aus, d. h., bei zwei Elementen mit gleichem Schlüssel wird die Reihenfolge der Elemente beibehalten. Im Gegensatz dazu wird bei einer instabilen Sortierung die Reihenfolge von Elementen, die über den gleichen Schlüssel verfügen, nicht beibehalten.

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



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft