LINQ to Entities 查询中的表达式
表达式是求值结果可以为单个值、对象、方法或命名空间的一段代码。 表达式可以包含文本值、方法调用、运算符及其操作数,或者简单名称。 简单名称可以是变量名、类型成员名、方法参数名、命名空间名或类型名。 表达式可以使用运算符(运算符又可使用其他表达式作为参数)或方法调用(方法调用的参数又可以是其他方法调用)。 因此,表达式可以非常简单,也可以极其复杂。
在 LINQ to Entities 查询中,表达式可以包含 System.Linq.Expressions 命名空间中的类型所允许的任何内容,包括 lambda 表达式。 可在 LINQ to Entities 查询中使用的表达式是可用来查询 实体框架 的表达式的超集。 对 实体框架 的查询中使用的表达式仅限于 ObjectQuery<T> 和基础数据源所支持的运算。
在下面的示例中,Where 子句中的比较运算就是一个表达式:
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
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);
}
}
注意: |
---|
特定的语言构造(如 C# unchecked)在 LINQ to Entities 中没有意义。 |