Order By Clause (Visual Basic)
Specifies the sort order for a query result.
Order By orderExp1 [ Ascending | Descending ] [, orderExp2 [...] ]
Parts
- orderExp1
Required. One or more fields from the current query result that identify how to order the returned values. The field names must be separated by commas (,). You can identify each field as sorted in ascending or descending order by using the Ascending or Descending keywords. If no Ascending or Descending keyword is specified, the default sort order is ascending. The sort order fields are given precedence from left to right.
Remarks
You can use the Order By clause to sort the results of a query. The Order By clause can only sort a result based on the range variable for the current scope. For example, the Select clause introduces a new scope in a query expression with new iteration variables for that scope. Range variables defined before a Select clause in a query are not available after the Select clause. Therefore, if you want to order your results by a field that is not available in the Select clause, you must put the Order By clause before the Select clause. One example of when you would have to do this is when you want to sort your query by fields that are not returned as part of the result.
Ascending and descending order for a field is determined by the implementation of the IComparable interface for the data type of the field. If the data type does not implement the IComparable interface, the sort order is ignored.
Example
The following query expression uses a From clause to declare a range variable book for the books collection. The Order By clause sorts the query result by price in ascending order (the default). Books with the same price are sorted by title in ascending order. The Select clause selects the Title and Price properties as the values returned by the query.
Dim titlesAscendingPrice = From book In books
Order By book.Price, book.Title
Select book.Title, book.Price
The following query expression uses the Order By clause to sort the query result by price in descending order. Books with the same price are sorted by title in ascending order.
Dim titlesDescendingPrice = From book In books
Order By book.Price Descending, book.Title
Select book.Title, book.Price
The following query expression uses a Select clause to select the book title, price, publish date, and author. It then populates the Title, Price, PublishDate, and Author fields of the range variable for the new scope. The Order By clause orders the new range variable by author name, book title, and then price. Each column is sorted in the default order (ascending).
Dim bookOrders =
From book In books
Select book.Title, book.Price, book.PublishDate, book.Author
Order By Author, Title, Price
See Also
Reference
Concepts
Introduction to LINQ in Visual Basic