Beispiele für die methodenbasierte Abfragesyntax: Einschränkung (LINQ to Entities)
In diesem Thema wird anhand von Beispielen gezeigt, wie Sie mithilfe der Where-Methode und der methodenbasierten Abfragesyntax 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.
Where
Beispiel
Im folgenden Beispiel werden alle Onlinebestellungen zurückgegeben.
Using AWEntities As New AdventureWorksEntities
Dim onlineOrders = AWEntities.SalesOrderHeader _
.Where(Function(order) order.OnlineOrderFlag = True) _
.Select(Function(order) New With { _
.SalesOrderID = order.SalesOrderID, _
.OrderDate = order.OrderDate, _
.SalesOrderNumber = order.SalesOrderNumber _
})
For Each onlineOrder In onlineOrders
Console.WriteLine("Order ID: {0} Order date: {1:d} Order number: {2}", _
onlineOrder.SalesOrderID, _
onlineOrder.OrderDate, _
onlineOrder.SalesOrderNumber)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
var onlineOrders = AWEntities.SalesOrderHeader
.Where(order => order.OnlineOrderFlag == true)
.Select(s => new { s.SalesOrderID, s.OrderDate, s.SalesOrderNumber });
foreach (var onlineOrder in onlineOrders)
{
Console.WriteLine("Order ID: {0} Order date: {1:d} Order number: {2}",
onlineOrder.SalesOrderID,
onlineOrder.OrderDate,
onlineOrder.SalesOrderNumber);
}
}
Beispiel
Im folgenden Beispiel werden die Aufträge zurückgegeben, bei denen die Bestellmenge größer als 2 und kleiner als 6 ist.
Using AWEntities As New AdventureWorksEntities
Dim query = AWEntities.SalesOrderDetail _
.Where(Function(order) order.OrderQty > 2 And order.OrderQty < 6) _
.Select(Function(order) New With { _
.SalesOrderID = order.SalesOrderID, _
.OrderQty = order.OrderQty _
})
For Each order In query
Console.WriteLine("Order ID: {0} Order quantity: {1}", _
order.SalesOrderID, order.OrderQty)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
var query = AWEntities.SalesOrderDetail
.Where(order => order.OrderQty > 2 && order.OrderQty < 6)
.Select(s => new { s.SalesOrderID, s.OrderQty });
foreach (var order in query)
{
Console.WriteLine("Order ID: {0} Order quantity: {1}",
order.SalesOrderID, order.OrderQty);
}
}
Beispiel
Im folgenden Beispiel werden alle Produkte mit roter Farbe zurückgegeben.
Using AWEntities As New AdventureWorksEntities
Dim query = AWEntities.Product _
.Where(Function(product) product.Color = "Red") _
.Select(Function(product) New With { _
.Name = product.Name, _
.ProductNumber = product.ProductNumber, _
.ListPrice = product.ListPrice _
})
For Each product In query
Console.WriteLine("Name: {0}", product.Name)
Console.WriteLine("Product number: {0}", product.ProductNumber)
Console.WriteLine("List price: ${0}", product.ListPrice)
Console.WriteLine("")
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
var query = AWEntities.Product
.Where(product => product.Color == "Red")
.Select(p => new { p.Name, p.ProductNumber, p.ListPrice });
foreach (var product in query)
{
Console.WriteLine("Name: {0}", product.Name);
Console.WriteLine("Product number: {0}", product.ProductNumber);
Console.WriteLine("List price: ${0}", product.ListPrice);
Console.WriteLine("");
}
}
Beispiel
Im folgenden Beispiel wird die Where-Methode verwendet, um Aufträge zu finden, die nach dem 1. Dezember 2003 eingegangen sind. Anschließend kommt die order.SalesOrderDetail-Navigationseigenschaft zum Einsatz, um die Details zu den einzelnen Aufträgen abzurufen.
Using AWEntities As New AdventureWorksEntities
Dim query = AWEntities.SalesOrderHeader _
.Where(Function(order) order.OrderDate >= New DateTime(2003, 12, 1)) _
.Select(Function(order) order)
Console.WriteLine("Orders that were made after December 1, 2003:")
For Each order In query
Console.WriteLine("OrderID {0} Order date: {1:d} ", _
order.SalesOrderID, order.OrderDate)
For Each orderDetail In order.SalesOrderDetail
Console.WriteLine(" Product ID: {0} Unit Price {1}", _
orderDetail.ProductID, orderDetail.UnitPrice)
Next
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
IQueryable<SalesOrderHeader> query = AWEntities.SalesOrderHeader
.Where(order => order.OrderDate >= new DateTime(2003, 12, 1))
.Select(o => o);
Console.WriteLine("Orders that were made after December 1, 2003:");
foreach (SalesOrderHeader order in query)
{
Console.WriteLine("OrderID {0} Order date: {1:d} ",
order.SalesOrderID, order.OrderDate);
foreach (SalesOrderDetail orderDetail in order.SalesOrderDetail)
{
Console.WriteLine(" Product ID: {0} Unit Price {1}",
orderDetail.ProductID, orderDetail.UnitPrice);
}
}
}
Siehe auch
Konzepte
Beispiele für die methodenbasierte Abfragesyntax (LINQ to Entities)