Ausdrücke in LINQ to Entities-Abfragen
Ein Ausdruck ist ein Codefragment, das als einzelner Wert, einzelnes Objekt, einzelne Methode oder einzelner Namespace ausgewertet werden kann. Ausdrücke können einen literalen Wert, einen Methodenaufruf, einen Operator und die entsprechenden Operanden oder einen einfachen Namen enthalten. Einfache Namen können der Name einer Variablen, eines Typmembers, eines Methodenparameters, eines Namespaces oder eines Typs sein. Ausdrücke können Operatoren verwenden, die wiederum andere Ausdrücke als Parameter oder Methodenaufrufe verwenden können, deren Parameter wiederum andere Methodenaufrufe darstellen. Die Bandbreite der möglichen Ausdrücke reicht daher von einfach bis sehr komplex.
In LINQ-to-Entities-Abfragen können Ausdrücke alle im System.Linq.Expressions-Namespace zulässigen Typen enthalten, einschließlich Lambda-Ausdrücke. Die Ausdrücke, die in LINQ-to-Entities-Abfragen verwendet werden können, umfassen die Ausdrücke, mit denen das Entity Framework abgefragt werden kann. Ausdrücke, die Teil einer Abfrage des Entity Framework sind, sind auf Operationen eingeschränkt, die von ObjectQuery<T> und der zugrunde liegenden Datenquelle unterstützt werden.
Im folgenden Beispiel ist der Vergleich in der Where-Klausel ein Ausdruck:
Using AWEntities As New AdventureWorksEntities()
Dim sales As ObjectQuery(Of SalesOrderHeader) = AWEntities.SalesOrderHeader
Dim salesInfo = _
From s In sales _
Where s.TotalDue >= 200 _
Select s.SalesOrderID
Console.WriteLine("Sales order info:")
For Each orderNumber As Integer In salesInfo
Console.WriteLine("Order number: " & orderNumber)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<SalesOrderHeader> sales = AWEntities.SalesOrderHeader;
IQueryable<int> salesInfo =
from s in sales
where s.TotalDue >= 200
select s.SalesOrderID;
Console.WriteLine("Sales order info:");
foreach (int orderNumber in salesInfo)
{
Console.WriteLine("Order number: " + orderNumber);
}
}
Hinweis |
---|
Bestimmte Sprachkonstrukte, wie unchecked in C#, haben in LINQ-to-Entities keine Bedeutung. |