LINQ to Entities 查詢中的運算式
運算式是可以評估為單一值、物件、方法或命名空間的程式碼片段。 運算式可以包含常值、方法呼叫、運算子及其運算元,或是簡單名稱。 簡單名稱可以是變數、型別成員、方法參數、命名空間或型別的名稱。 運算式可以使用運算子 (後者又可能使用其他運算式當做參數) 或方法呼叫 (它的參數又可能是其他方法呼叫)。 因此,運算式可以很簡單,也可以非常複雜。
在 LINQ to Entities 查詢中,運算式可以包含 System.Linq.Expressions 命名空間中型別允許的任何項目,包括 Lambda 運算式。 可用於 LINQ to Entities 查詢的運算式是可用來查詢 Entity Framework 的運算式超集。 針對 Entity Framework 之查詢中所包含的運算式僅限於 ObjectQuery<T>
和基礎資料來源所支援的運算。
在以下範例中,Where
子句中的比較就是個運算式:
Decimal totalDue = 200;
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<int> salesInfo =
from s in context.SalesOrderHeaders
where s.TotalDue >= totalDue
select s.SalesOrderID;
Console.WriteLine("Sales order info:");
foreach (int orderNumber in salesInfo)
{
Console.WriteLine("Order number: " + orderNumber);
}
}
Dim totalDue = 200
Using context As New AdventureWorksEntities()
Dim salesInfo = _
From s In context.SalesOrderHeaders _
Where s.TotalDue >= totalDue _
Select s.SalesOrderID
Console.WriteLine("Sales order info:")
For Each orderNumber As Integer In salesInfo
Console.WriteLine("Order number: " & orderNumber)
Next
End Using
注意
指定語言建構 (例如 C# unchecked
) 在 LINQ to Entities 中沒有意義。