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.
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 |
|
OrderByDescending |
Sortiert Werte in absteigender Reihenfolge. |
orderby … descending |
Order By … Descending |
|
ThenBy |
Führt eine sekundäre Sortierung in aufsteigender Reihenfolge aus. |
orderby …, … |
Order By …, … |
|
ThenByDescending |
Führt eine sekundäre Sortierung in absteigender Reihenfolge aus. |
orderby …, … descending |
Order By …, … Descending |
|
Reverse |
Kehrt die Reihenfolge der Elemente in einer Auflistung um. |
Nicht zutreffend. |
Nicht zutreffend. |
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