排序作業會根據一個或多個屬性來排序序列的項目。 第一個排序準則會執行元素的主要排序; 您可以藉由指定第二個排序準則來排序每一個主要排序群組內的元素。
下圖顯示字元序列上依字母順序排序作業的結果。
下節列出可排序資料的標準查詢運算子方法。
方法
| 方法名稱 | 說明 | Visual Basic 查詢表達式語法 | 詳細資訊 |
|---|---|---|---|
| 排序依據 | 依遞增順序排序值。 | Order By |
Enumerable.OrderBy Queryable.OrderBy |
| 依降序排序 | 依遞減順序排序值。 | Order By … Descending |
Enumerable.OrderByDescending Queryable.OrderByDescending |
| ThenBy | 依遞增順序執行次要排序。 | Order By …, … |
Enumerable.ThenBy Queryable.ThenBy |
| ThenByDescending | 依遞減順序執行次要排序。 | Order By …, … Descending |
Enumerable.ThenByDescending Queryable.ThenByDescending |
| 倒轉 | 反轉集合中項目的順序。 | 不適用。 | Enumerable.Reverse Queryable.Reverse |
查詢表達式語法範例
主要排序範例
主要遞增排序
下列範例示範如何使用 Order By LINQ 查詢中的 子句,以遞增順序依字串長度排序陣列中的字串。
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
主要遞減排序
下一個範例示範如何使用 Order By Descending LINQ 查詢中的 子句,以遞減順序依其第一個字母排序字串。
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
次要排序範例
次要遞增排序
下列範例示範如何使用 Order By LINQ 查詢中的 子句來執行數位中字串的主要和次要排序。 字串依長度排序為主,並次依字串的第一個字母排序,兩者皆為遞增順序。
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
次要遞減排序
下一個範例示範如何在 LINQ 查詢中使用 Order By Descending 子句,執行依遞增順序的主要排序以及依遞減順序的次要排序。 字串主要依長度排序,並在相同長度的情況下,以字串的第一個字母進行次要排序。
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