Примеры синтаксиса для выражений запросов: упорядочение (язык LINQ to Entities)
Примеры в этом разделе демонстрируют, как использовать методы OrderBy и OrderByDescending для выполнения запросов к модели AdventureWorks Sales с использованием синтаксиса выражений запроса. Модель AdventureWorks Sales, которая используется в этих примерах, состоит из таблиц Contact, Address, Product, SalesOrderHeader и SalesOrderDetail образца базы данных AdventureWorks.
В примерах, приведенных в этом разделе, используются следующие инструкции using/Imports.
Option Explicit On
Option Strict On
Imports System.Data.Objects
Imports System.Globalization
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;
OrderBy
Пример
В следующем примере выражение OrderBy используется для возвращения списка контактов, упорядоченного по фамилии.
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
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);
}
}
Пример
В следующем примере выражение OrderBy используется для сортировки контактов по длине фамилии.
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
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);
}
}
OrderByDescending
Пример
В следующем примере выражение orderby… descending (Order By … Descending на Visual Basic), эквивалентное методу OrderByDescending, используется для сортировки прейскуранта по убыванию.
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
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);
}
}
ThenBy
Пример
В следующем примере выражения OrderBy и ThenBy используются для возвращения списка контактов, упорядоченных вначале по фамилии, затем по имени.
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
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);
}
}
ThenByDescending
Пример
В следующем примере выражение OrderBy… Descending, эквивалентное методу ThenByDescending, используется для сортировки списка продуктов: вначале по названию, затем по прейскурантной цене — по убыванию.
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
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);
}
}