Sortieren von Daten

Aktualisiert: November 2007

Bei einem Sortiervorgang werden die Elemente einer Sequenz auf Grundlage eines oder mehrerer Attribute geordnet. Das erste Sortierkriterium führt eine primäre Sortierung der Elemente aus. Sie können die Elemente innerhalb jeder primären Sortiergruppe sortieren, indem Sie ein zweites Sortierkriterium angeben.

Die folgende Illustration zeigt die Ergebnisse eines alphabetischen Sortiervorgangs an einer Folge von Zeichen an.

LINQ-Sortierungsvorgang

Die Standardabfrageoperator-Methoden zur Datensortierung werden im folgenden Abschnitt aufgelistet.

Methoden

Methodenname

Beschreibung

C#-Abfrageausdruckssyntax

Visual Basic-Abfrageausdruckssyntax

Weitere Informationen

OrderBy

Sortiert Werte in aufsteigender Reihenfolge.

orderby

Order By

Enumerable.OrderBy

Queryable.OrderBy

OrderByDescending

Sortiert Werte in absteigender Reihenfolge.

orderby … descending

Order By … Descending

Enumerable.OrderByDescending

Queryable.OrderByDescending

ThenBy

Führt eine sekundäre Sortierung in aufsteigender Reihenfolge aus.

orderby …, …

Order By …, …

Enumerable.ThenBy

Queryable.ThenBy

ThenByDescending

Führt eine sekundäre Sortierung in absteigender Reihenfolge aus.

orderby …, … descending

Order By …, … Descending

Enumerable.ThenByDescending

Queryable.ThenByDescending

Reverse

Kehrt die Reihenfolge der Elemente in einer Auflistung um.

Nicht zutreffend.

Nicht zutreffend.

Enumerable.Reverse<TSource>

Queryable.Reverse<TSource>

Beispiele von Abfrageausdruckssyntax

Beispiele von primärer Sortierung

Primäre aufsteigende Sortierung

Das folgende Beispiel zeigt, wie die orderby-Klausel (Order By-Klausel in Visual Basic) in einer LINQ-Abfrage verwendet wird, um die Zeichenfolgen in einem Array nach Zeichenfolgenlänge in aufsteigender Reihenfolge zu sortieren.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Length _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' the
' fox
' quick
' brown
' jumps

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

Das nächste Beispiel zeigt, wie die orderbydescending-Klausel (Order By Descending-Klausel in Visual Basic) in einer LINQ-Abfrage verwendet wird, um die Zeichenfolgen nach ihrem ersten Buchstaben in absteigender Reihenfolge zu sortieren.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Substring(0, 1) Descending _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' the
' quick
' jumps
' fox
' brown

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
*/

Beispiele von sekundärer Sortierung

Sekundäre aufsteigende Sortierung

Das folgende Beispiel zeigt, wie die orderby-Klausel (Order By-Klausel in Visual Basic) in einer LINQ-Abfrage verwendet wird, um die Zeichenfolgen in einem Array primär und sekundär zu sortieren. Die Zeichenfolgen werden primär der Länge nach und sekundär nach dem ersten Buchstaben der Zeichenfolge sortiert, beides in aufsteigender Reihenfolge.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Length, word.Substring(0, 1) _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' fox
' the
' brown
' jumps
' quick

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

Das nächste Beispiel zeigt, wie die orderbydescending-Klausel (Order By Descending-Klausel in Visual Basic) in einer LINQ-Abfrage verwendet wird, um eine primäre Sortierung in aufsteigender und eine sekundäre Sortierung in absteigender Reihenfolge auszuführen. Die Zeichenfolgen werden primär der Länge nach und sekundär nach dem ersten Buchstaben der Zeichenfolge sortiert.

Dim words() As String = {"the", "quick", "brown", "fox", "jumps"}

Dim sortQuery = From word In words _
                Order By word.Length, word.Substring(0, 1) Descending _
                Select word

Dim sb As New System.Text.StringBuilder()
For Each str As String In sortQuery
    sb.AppendLine(str)
Next

' Display the results.
MsgBox(sb.ToString())

' This code produces the following output:

' fox
' the
' quick
' jumps
' brown

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
*/

Weitere Informationen zur Datensortierung

Siehe auch

Konzepte

Übersicht über Standardabfrageoperatoren

Referenz

orderby-Klausel (C#-Referenz)

ORDER BY-Klausel (Visual Basic)

System.Linq