Sortieren von Daten
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 für die 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 = {"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 orderby descending-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 = {"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 = {"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 orderby descending-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 = {"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
*/
Siehe auch
Aufgaben
Gewusst wie: Sortieren der Ergebnisse einer Join-Klausel (C#-Programmierhandbuch)
Gewusst wie: Sortieren von Abfrageergebnissen unter Verwendung von LINQ (Visual Basic)
Gewusst wie: Sortieren oder Filtern von Textdaten nach einem beliebigen Wort oder Feld (LINQ)
Referenz
ORDER BY-Klausel (Visual Basic)