Order By Clause (Visual Basic)
Specifies the sort order for a query result.
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.
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.
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.
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).