Order By 子句 (Visual Basic)

指定查询结果的排序顺序。

语法

Order By orderExp1 [ Ascending | Descending ] [, orderExp2 [...] ]

组成部分

orderExp1(必需)。 当前查询结果中的一个或多个字段,用于确定如何对返回的值进行排序。 字段名称必须用逗号 (,) 分隔。 可以使用 AscendingDescending 关键字,将每个字段标识为按升序或降序排序。 如果未指定 AscendingDescending 关键字,则默认排序顺序为升序。 排序顺序字段的优先级为从左到右。

注解

可以使用 Order By 子句对查询结果进行排序。 Order By 子句只能根据当前范围的范围变量对结果进行排序。 例如,Select 子句在查询表达式中引入了一个新范围,该范围具有新的迭代变量。 在查询中的 Select 子句前面定义的范围变量在 Select 子句后面不可用。 因此,如果要按 Select 子句中不提供的字段对结果进行排序,必须将 Order By 子句放在 Select 子句前面。 需要执行此操作的一个示例是,要按不作为结果的一部分返回的字段对查询进行排序。

字段的升序和降序是由字段数据类型的 IComparable 接口的实现决定的。 如果数据类型没有实现 IComparable 接口,则忽略排序顺序。

示例 1

下面的查询表达式使用 From 子句为 books 集合声明范围变量 bookOrder By 子句按价格以升序(默认)对查询结果进行排序。 价格相同的书籍按书名以升序排序。 Select 子句选择 TitlePrice 属性作为查询返回的值。

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 子句选择书名、价格、发布日期和作者。 然后它为新范围填充范围变量的 TitlePricePublishDateAuthor 字段。 Order By 子句按作者姓名、书名和价格对新范围变量进行排序。 每列都按默认顺序(升序)排序。

Dim bookOrders =
  From book In books
  Select book.Title, book.Price, book.PublishDate, book.Author
  Order By Author, Title, Price

另请参阅