Sortieren von Daten (Visual Basic)
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.
Die Methoden des Standardabfrageoperators, die Daten sortieren, sind im folgenden Abschnitt aufgeführt.
Methoden
Methodenname | Beschreibung | Visual Basic-Abfrageausdruckssyntax | Weitere Informationen |
---|---|---|---|
OrderBy | Sortiert Werte in aufsteigender Reihenfolge | Order By |
Enumerable.OrderBy Queryable.OrderBy |
OrderByDescending | Sortiert Werte in absteigender Reihenfolge | Order By … Descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
ThenBy | Führt eine sekundäre Sortierung in aufsteigender Reihenfolge durch | Order By …, … |
Enumerable.ThenBy Queryable.ThenBy |
ThenByDescending | Führt eine sekundäre Sortierung in absteigender Reihenfolge durch | Order By …, … Descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
Reverse | Kehrt die Reihenfolge der Elemente in einer Auflistung um | Nicht zutreffend. | Enumerable.Reverse Queryable.Reverse |
Beispiele für die Abfrageausdruckssyntax
Primäre Sortierungsbeispiele
Primäre aufsteigende Sortierung
Im folgenden Beispiel wird veranschaulicht, wie man die Order By
-Klausel in einer LINQ-Abfrage verwendet, um die Zeichenfolgen in einem Array in aufsteigender Reihenfolge nach der Länge der Zeichenfolgen 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
Primäre absteigende Sortierung
Im nächsten Beispiel wird veranschaulicht, wie man die Order By Descending
-Klausel in einer LINQ-Abfrage verwendet, um die Zeichenfolgen in absteigender Reihenfolge nach ihrem ersten Buchstaben 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
Sekundäre Sortierungsbeispiele
Sekundäre aufsteigende Sortierung
Im folgenden Beispiel wird veranschaulicht, wie man die Order By
-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.
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
Sekundäre absteigende Sortierung
Im nächsten Beispiel wird gezeigt, wie man die Order By 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.
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