本主題中的範例示範如何使用查詢表達式語法,使用 OrderBy 和 OrderByDescending 方法來查詢 AdventureWorks Sales Model。 這些範例中使用的 AdventureWorks 銷售模型是從 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 傳回依姓氏排序的聯繫人清單。
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
依降序排序
範例
下列範例使用visual Basic中的 orderby… descending (Order By … Descending),這相當於 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: {product.ProductID} Product Name: {product.Name} List Price {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