常量表达式

常量表达式由常量值组成。常量值被直接转换为常量命令目录树表达式,而无需在客户端进行任何变换。这包括产生常量值的表达式。因此,所有涉及常量的表达式都应具有数据源行为。这可能产生与 CLR 行为不同的行为。

下面的示例说明了一个在服务器上求值的常量表达式。

Using AWEntities As New AdventureWorksEntities()
    Dim sales As ObjectQuery(Of SalesOrderHeader) = AWEntities.SalesOrderHeader

    Dim salesInfo = _
        From s In sales _
        Where s.TotalDue >= 200 + 3 _
        Select s.SalesOrderNumber

    Console.WriteLine("Sales order numbers:")
    For Each orderNum As String In salesInfo
        Console.WriteLine(orderNum)
    Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
    ObjectQuery<SalesOrderHeader> sales = AWEntities.SalesOrderHeader;

    IQueryable<string> salesInfo =
        from s in sales
        where s.TotalDue >= 200 + 3
        select s.SalesOrderNumber;

    Console.WriteLine("Sales order numbers:");
    foreach (string orderNum in salesInfo)
    {
        Console.WriteLine(orderNum);
    }
}

LINQ to Entities 不支持将用户类用作常量。但是,用户类上的属性引用被视为常量,将转换为命令目录树常量表达式并在数据源上执行。

另请参见

概念

LINQ to Entities 查询中的表达式