クエリ式の構文例:順序
このトピックでは、クエリ式構文で、OrderBy
メソッドおよび OrderByDescending
メソッドを使用して、AdventureWorks Sales Model を照会する例を取り上げます。 これらの例で使用されている、AdventureWorks Sales Model は、AdventureWorks サンプル データベースの Contact、Address、Product、SalesOrderHeader、SalesOrderDetail の各テーブルから作成されています。
このトピックの例には、次の using
/Imports
ステートメントが使用されています。
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects;
using System.Globalization;
using System.Data.EntityClient;
using System.Data.SqlClient;
using System.Data.Common;
Option Explicit On
Option Strict On
Imports System.Data.Objects
Imports System.Globalization
OrderBy
例
次の例では、OrderBy を使用して、姓の順に並べ替えられた連絡先の一覧を返します。
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<Contact> sortedNames =
from n in context.Contacts
orderby n.LastName
select n;
Console.WriteLine("The sorted list of last names:");
foreach (Contact n in sortedNames)
{
Console.WriteLine(n.LastName);
}
}
Using context As New AdventureWorksEntities
Dim contacts As ObjectSet(Of Contact) = context.Contacts
Dim sortedContacts = _
From contact In contacts _
Order By contact.LastName _
Select contact
Console.WriteLine("The sorted list of last names:")
For Each n As Contact In sortedContacts
Console.WriteLine(n.LastName)
Next
End Using
例
次の例では、OrderBy を使用して、連絡先の一覧を姓の長さの順に並べ替えます。
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<Contact> sortedNames =
from n in context.Contacts
orderby n.LastName.Length
select n;
Console.WriteLine("The sorted list of last names (by length):");
foreach (Contact n in sortedNames)
{
Console.WriteLine(n.LastName);
}
}
Using context As New AdventureWorksEntities
Dim contacts As ObjectSet(Of Contact) = context.Contacts
Dim sortedNames = _
From n In contacts _
Order By n.LastName.Length _
Select n
Console.WriteLine("The sorted list of last names (by length):")
For Each n As Contact In sortedNames
Console.WriteLine(n.LastName)
Next
End Using
OrderByDescending
例
次の例では、orderby… descending
メソッドと同等の Order By … Descending
(Visual Basic の場合は OrderByDescending) を使用して、価格の一覧を高いものから低い順に並べ替えます。
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<Decimal> sortedPrices =
from p in context.Products
orderby p.ListPrice descending
select p.ListPrice;
Console.WriteLine("The list price from highest to lowest:");
foreach (Decimal price in sortedPrices)
{
Console.WriteLine(price);
}
}
Using context As New AdventureWorksEntities
Dim products As ObjectSet(Of Product) = context.Products
Dim sortedPrices = _
From product In products _
Order By product.ListPrice Descending _
Select product.ListPrice
Console.WriteLine("The list price from highest to lowest:")
For Each price As Decimal In sortedPrices
Console.WriteLine(price)
Next
End Using
ThenBy
例
次の例では、OrderBy と ThenBy を使用して、姓の順、次に名の順に並べ替えられた連絡先の一覧を返します。
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<Contact> sortedContacts =
from contact in context.Contacts
orderby contact.LastName, contact.FirstName
select contact;
Console.WriteLine("The list of contacts sorted by last name then by first name:");
foreach (Contact sortedContact in sortedContacts)
{
Console.WriteLine(sortedContact.LastName + ", " + sortedContact.FirstName);
}
}
Using context As New AdventureWorksEntities
Dim contacts As ObjectSet(Of Contact) = context.Contacts
Dim sortedContacts = _
From contact In contacts _
Order By contact.LastName, contact.FirstName _
Select contact
Console.WriteLine("The list of contacts sorted by last name then by first name:")
For Each sortedContact As Contact In sortedContacts
Console.WriteLine(sortedContact.LastName + ", " + sortedContact.FirstName)
Next
End Using
ThenByDescending
例
次の例では、OrderBy… Descending
メソッドと同等の ThenByDescending を使用して、製品の一覧を、名前順に、次に表示価格の高いものから低い順に並べ替えます。
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<Product> query =
from product in context.Products
orderby product.Name, product.ListPrice descending
select product;
foreach (Product product in query)
{
Console.WriteLine("Product ID: {0} Product Name: {1} List Price {2}",
product.ProductID,
product.Name,
product.ListPrice);
}
}
Using context As New AdventureWorksEntities
Dim products As ObjectSet(Of Product) = context.Products
Dim query As IQueryable(Of Product) = _
From product In products _
Order By product.Name, product.ListPrice Descending _
Select product
For Each prod As Product In query
Console.WriteLine("Product ID: {0} Product Name: {1} List Price {2}", _
prod.ProductID, _
prod.Name, _
prod.ListPrice)
Next
End Using