常量表达式由常量值组成。 常量值直接转换为常量命令树表达式,而无需在客户端上进行任何转换。 这包括导致常量值的表达式。 因此,对于涉及常量的所有表达式,应预期数据源行为。 这可能产生与 CLR 行为不同的行为。
下面的示例演示在服务器上计算的常量表达式。
Decimal totalDue = 200 + 3;
using (AdventureWorksEntities context = new AdventureWorksEntities())
{
IQueryable<string> salesInfo =
from s in context.SalesOrderHeaders
where s.TotalDue >= totalDue
select s.SalesOrderNumber;
Console.WriteLine("Sales order numbers:");
foreach (string orderNum in salesInfo)
{
Console.WriteLine(orderNum);
}
}
Dim totalDue = 200 + 3
Using context As New AdventureWorksEntities()
Dim salesInfo = _
From s In context.SalesOrderHeaders _
Where s.TotalDue >= totalDue _
Select s.SalesOrderNumber
Console.WriteLine("Sales order numbers:")
For Each orderNum As String In salesInfo
Console.WriteLine(orderNum)
Next
End Using
LINQ to Entities 不支持将用户类用作常量。 但是,用户类的属性引用被视为常量,并将转换为命令树常量表达式并在数据源上执行。