排序作根据一个或多个属性对序列的元素进行排序。 第一个排序条件对元素执行主要排序。 通过指定第二个排序条件,可以对每个主要排序组中的元素进行排序。
下图显示了对字符序列的按字母顺序排序作的结果。
以下部分列出了对数据进行排序的标准查询运算符方法。
方法
方法名
DESCRIPTION
Visual Basic 查询表达式语法
详细信息
OrderBy
按升序对值进行排序。
Order By
Enumerable.OrderBy Queryable.OrderBy
OrderByDescending
按降序对值进行排序。
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
次要降序排序
下一个示例演示如何使用 Order By Descending LINQ 查询中的子句按升序执行主要排序,按降序执行辅助排序。 字符串主要按长度排序,其次按字符串的第一个字母进行排序。
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
另请参阅
System.Linq
标准查询运算符概述 (Visual Basic)
Order By 子句
如何:对查询结果进行排序
如何:按任意单词或字段对文本数据进行排序或筛选(LINQ)(Visual Basic)