Sortieren von Daten (C#)

Bei einem Sortiervorgang werden die Elemente einer Sequenz auf Grundlage eines oder mehrerer Attribute sortiert. Mit dem ersten Sortierkriterium wird eine primäre Sortierung der Elemente ausgeführt. Sie können die Elemente innerhalb jeder primären Sortiergruppe sortieren, indem Sie ein zweites Sortierkriterium angeben.

Die folgende Abbildung zeigt das Ergebnis eines alphabetischen Sortiervorgangs bei einer Zeichensequenz.

LINQ-Sortierungsvorgang

Die Methoden des Standardabfrageoperators, die Daten sortieren, sind im folgenden Abschnitt aufgeführt.

Methoden

Methodenname Beschreibung C#-Abfrageausdruckssyntax Weitere Informationen
OrderBy Sortiert Werte in aufsteigender Reihenfolge orderby <xref:System.Linq.Enumerable.OrderBy%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.OrderBy%2A?displayProperty=nameWithType>
OrderByDescending Sortiert Werte in absteigender Reihenfolge orderby … descending <xref:System.Linq.Enumerable.OrderByDescending%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.OrderByDescending%2A?displayProperty=nameWithType>
ThenBy Führt eine sekundäre Sortierung in aufsteigender Reihenfolge durch orderby …, … <xref:System.Linq.Enumerable.ThenBy%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.ThenBy%2A?displayProperty=nameWithType>
ThenByDescending Führt eine sekundäre Sortierung in absteigender Reihenfolge durch orderby …, … descending <xref:System.Linq.Enumerable.ThenByDescending%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.ThenByDescending%2A?displayProperty=nameWithType>
Reverse Kehrt die Reihenfolge der Elemente in einer Auflistung um Nicht zutreffend. <xref:System.Linq.Enumerable.Reverse%2A?displayProperty=nameWithType>

<xref:System.Linq.Queryable.Reverse%2A?displayProperty=nameWithType>

Beispiele für die Abfrageausdruckssyntax

Primäre Sortierungsbeispiele

Primäre aufsteigende Sortierung

Im folgenden Beispiel wird veranschaulicht, wie man die orderby-Klausel in einer LINQ-Abfrage verwendet, um die Zeichenfolgen in einem Array in aufsteigender Reihenfolge nach der Länge der Zeichenfolgen zu sortieren.

string[] words = { "the", "quick", "brown", "fox", "jumps" };  

IEnumerable<string> query = from word in words  
                            orderby word.Length  
                            select word;  

foreach (string str in query)  
    Console.WriteLine(str);  

/* This code produces the following output:  

    the  
    fox  
    quick  
    brown  
    jumps  
*/  

Primäre absteigende Sortierung

Im nächsten Beispiel wird veranschaulicht, wie man die orderby``descending-Klausel in einer LINQ-Abfrage verwendet, um die Zeichenfolgen in absteigender Reihenfolge nach ihrem ersten Buchstaben zu sortieren.

string[] words = { "the", "quick", "brown", "fox", "jumps" };  

IEnumerable<string> query = from word in words  
                            orderby word.Substring(0, 1) descending  
                            select word;  

foreach (string str in query)  
    Console.WriteLine(str);  

/* This code produces the following output:  

    the  
    quick  
    jumps  
    fox  
    brown  
*/  

Sekundäre Sortierungsbeispiele

Sekundäre aufsteigende Sortierung

Im folgenden Beispiel wird veranschaulicht, wie man die orderby-Klausel in einer LINQ-Abfrage verwendet, um eine primäre und eine sekundäre Sortierung der Zeichenfolgen in einem Array durchzuführen. Die Zeichenfolgen werden primär nach der Länge und sekundär nach dem ersten Buchstaben der Zeichenfolge sortiert, beide Male in aufsteigender Reihenfolge.

string[] words = { "the", "quick", "brown", "fox", "jumps" };  

IEnumerable<string> query = from word in words  
                            orderby word.Length, word.Substring(0, 1)  
                            select word;  

foreach (string str in query)  
    Console.WriteLine(str);  

/* This code produces the following output:  

    fox  
    the  
    brown  
    jumps  
    quick  
*/  

Sekundäre absteigende Sortierung

Im nächsten Beispiel wird gezeigt, wie man die orderby``descending-Klausel in einer LINQ-Abfrage verwendet, um eine primäre Sortierung in aufsteigender Reihenfolge und eine sekundäre Sortierung in absteigender Reihenfolge durchzuführen. Die Zeichenfolgen werden primär nach der Länge und sekundär nach dem ersten Buchstaben der Zeichenfolge sortiert.

string[] words = { "the", "quick", "brown", "fox", "jumps" };  

IEnumerable<string> query = from word in words  
                            orderby word.Length, word.Substring(0, 1) descending  
                            select word;  

foreach (string str in query)  
    Console.WriteLine(str);  

/* This code produces the following output:  

    the  
    fox  
    quick  
    jumps  
    brown  
*/  

Siehe auch

<xref:System.Linq>
Übersicht über Standardabfrageoperatoren (C#)
orderby clause (orderby-Klausel)
Vorgehensweise: Sortieren der Ergebnisse einer Join-Klausel
Vorgehensweise: Sortieren oder Filtern von Textdaten nach einem beliebigen Wort oder Feld (LINQ) (C#)