Beispiele für die Abfrageausdruckssyntax: Partitionierung (LINQ to Entities)
In diesem Thema wird anhand von Beispielen gezeigt, wie Sie mithilfe der Skip-Methode, der Take-Methode und der Abfrageausdruckssyntax das AdventureWorks Sales-Modell abfragen können. Für das in den Beispielen verwendete "AdventureWorks Sales"-Modell wurde auf die Tabellen Contact, Address, Product, SalesOrderHeader und SalesOrderDetail der "AdventureWorks"-Beispieldatenbank zurückgegriffen.
Die Beispiele in diesem Thema verwenden die folgenden using/Imports-Anweisungen:
Option Explicit On
Option Strict On
Imports L2EExamplesVB.AdventureWorksModel
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 AdventureWorksModel;
using System.Globalization;
Weitere Informationen finden Sie unter Gewusst wie: Erstellen eines LINQ to Entities-Projekts in Visual Studio.
Skip
Beispiel
Im folgenden Beispiel wird die Skip-Methode verwendet, um, mit Ausnahme der ersten beiden Adressen, alle Adressen in Seattle abzurufen.
Using AWEntities As New AdventureWorksEntities
Dim orders As ObjectQuery(Of SalesOrderHeader) = AWEntities.SalesOrderHeader
Dim addresses As ObjectQuery(Of Address) = AWEntities.Address
'LINQ to Entities only supports Skip on ordered collections.
Dim query = ( _
From address In addresses _
From order In orders _
Where address.AddressID = order.Address.AddressID _
And address.City = "Seattle" _
Order By order.SalesOrderID _
Select New With _
{ _
.City = address.City, _
.OrderID = order.SalesOrderID, _
.OrderDate = order.OrderDate _
}).Skip(2)
Console.WriteLine("All but first 2 orders in Seattle:")
For Each order In query
Console.WriteLine("City: {0} Order ID: {1} Total Due: {2:d}", _
order.City, order.OrderID, order.OrderDate)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<Address> addresses = AWEntities.Address;
ObjectQuery<SalesOrderHeader> orders = AWEntities.SalesOrderHeader;
//LINQ to Entities only supports Skip on ordered collections.
var query = (
from address in addresses
from order in orders
where address.AddressID == order.Address.AddressID
&& address.City == "Seattle"
orderby order.SalesOrderID
select new
{
City = address.City,
OrderID = order.SalesOrderID,
OrderDate = order.OrderDate
}).Skip(2);
Console.WriteLine("All but first 2 orders in Seattle:");
foreach (var order in query)
{
Console.WriteLine("City: {0} Order ID: {1} Total Due: {2:d}",
order.City, order.OrderID, order.OrderDate);
}
Take
Beispiel
Im folgenden Beispiel wird die Take-Methode verwendet, um die ersten drei Adressen in Seattle abzurufen.
Using AWEntities As New AdventureWorksEntities
Dim orders As ObjectQuery(Of SalesOrderHeader) = AWEntities.SalesOrderHeader
Dim addresses As ObjectQuery(Of Address) = AWEntities.Address
Dim query = ( _
From address In addresses _
From order In orders _
Where address.AddressID = order.Address.AddressID _
And address.City = "Seattle" _
Select New With _
{ _
.City = address.City, _
.OrderID = order.SalesOrderID, _
.OrderDate = order.OrderDate _
}).Take(3)
Console.WriteLine("First 3 orders in Seattle:")
For Each order In query
Console.WriteLine("City: {0} Order ID: {1} Total Due: {2:d}", _
order.City, order.OrderID, order.OrderDate)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<Address> addresses = AWEntities.Address;
ObjectQuery<SalesOrderHeader> orders = AWEntities.SalesOrderHeader;
var query = (
from address in addresses
from order in orders
where address.AddressID == order.Address.AddressID
&& address.City == "Seattle"
select new
{
City = address.City,
OrderID = order.SalesOrderID,
OrderDate = order.OrderDate
}).Take(3);
Console.WriteLine("First 3 orders in Seattle:");
foreach (var order in query)
{
Console.WriteLine("City: {0} Order ID: {1} Total Due: {2:d}",
order.City, order.OrderID, order.OrderDate);
}
}