Order By 句 (Visual Basic)
更新 : 2007 年 11 月
クエリ結果の並べ替え順序を指定します。
Order By orderExp1 [ Ascending | Descending ] [, orderExp2 [...] ]
指定項目
- orderExp1
必ず指定します。返される値を並べ替える方法を示す、現在のクエリ結果に含まれる 1 つ以上のフィールド。フィールド名は、コンマ (,) で区切る必要があります。Ascending キーワードまたは Descending キーワードを使用することで、各フィールドを昇順または降順のどちらに並べ替えるかを指定できます。Ascending または Descending のどちらのキーワードも指定しない場合の既定の並べ替え順序は昇順です。並べ替え順序フィールド間の優先順位は、左から右です。
解説
Order By 句を使用すると、クエリの結果を並べ替えることができます。Order By 句は、現在のスコープの範囲変数に基づいてのみ、結果を並べ替えることができます。たとえば、Select 句は、新しいスコープに対する新しい反復変数により、クエリ式にそのスコープを設定します。クエリで Select 句より前に定義されていた範囲変数は、Select 句の後では使用できなくなります。したがって、Select 句では使用できないフィールドで結果を並べ替える必要がある場合は、Select 句の前に Order By 句を置く必要があります。このようなことを行う必要がある場合の 1 つの例は、結果の一部として返されないフィールドでクエリを並べ替える場合です。
フィールドの昇順と降順は、そのフィールドのデータ型に対する IComparable インターフェイスの実装によって決まります。データ型が IComparable インターフェイスを実装していない場合、並べ替え順序は無視されます。
使用例
次のクエリ式では、From 句を使用して、books コレクションの範囲変数 book を宣言します。Order By 句は、価格の昇順 (既定) にクエリ結果を並べ替えます。同じ価格の本は、書名の昇順に並べられます。Select 句は、クエリによって返される値として Title プロパティのみを選択します。
Dim titlesAscendingPrice = From book In books _
Order By book.Price, book.Title _
Select book.Title, book.Price
次のクエリ式は、Order By 句を使用して、クエリ結果を価格の降順に並べ替えます。同じ価格の本は、書名の昇順に並べられます。
Dim titlesDescendingPrice = From book In books _
Order By book.Price Descending, book.Title _
Select book.Title, book.Price
次のクエリ式は、Select 句を使用して、書名、価格、出版社、および著者を選択します。その後、範囲変数の Title、Price、Publisher、Author の各フィールドに、新しいスコープを設定します。Order By 句は、著者名、書名、価格の順に、新しい範囲変数を並べ替えます。各列は、既定の順序 (昇順) に並べられます。
Dim bookOrders = _
From book In books _
Select book.Title, book.Price, book.PublishDate, book.Author _
Order By Author, Title, Price