指定查询结果的排序顺序。
语法
Order By orderExp1 [ Ascending | Descending ] [, orderExp2 [...] ]
部件
orderExp1
必填。 当前查询结果中的一个或多个字段,用于标识如何对返回的值进行排序。 字段名称必须用逗号(,)分隔。 可以使用或Descending
关键字将每个字段标识为升序或降序Ascending
排序。
Ascending
如果未指定或Descending
关键字,则默认排序顺序为升序。 排序顺序字段优先于从左到右。
注解
可以使用子 Order By
句对查询结果进行排序。 子 Order By
句只能基于当前作用域的范围变量对结果进行排序。 例如,该 Select
子句在查询表达式中引入了一个新的作用域,其中包含该作用域的新迭代变量。 在查询中的子句之前 Select
定义的范围变量在子句之后 Select
不可用。 因此,如果要按子句中不可用的Select
字段对结果进行排序,则必须在子句之前Select
放置子Order By
句。 需要执行此作的一个示例是,如果要按未作为结果的一部分返回的字段对查询进行排序。
字段的升序和降序由字段数据类型的接口实现 IComparable 决定。 如果数据类型未实现 IComparable 接口,则忽略排序顺序。
示例 1
以下查询表达式使用子From
句声明集合的范围books
变量book
。 子 Order By
句按升序(默认值)按价格对查询结果进行排序。 具有相同价格的书籍按标题按升序排序。 该 Select
子句选择 Title
和 Price
属性作为查询返回的值。
Dim titlesAscendingPrice = From book In books
Order By book.Price, book.Title
Select book.Title, book.Price
示例 2
以下查询表达式使用 Order By
子句按降序对查询结果进行排序。 具有相同价格的书籍按标题按升序排序。
Dim titlesDescendingPrice = From book In books
Order By book.Price Descending, book.Title
Select book.Title, book.Price
示例 3
以下查询表达式使用子 Select
句来选择书籍标题、价格、发布日期和作者。 然后,它将填充Title
新作用域的范围变量的字段Price
PublishDate
和Author
字段。 子 Order By
句按作者名称、书名和价格对新范围变量进行排序。 每列按默认顺序排序(升序)。
Dim bookOrders =
From book In books
Select book.Title, book.Price, book.PublishDate, book.Author
Order By Author, Title, Price