Share via


Constant Expressions

A constant expression consists of a constant value. Constant values are directly converted to constant command tree expressions, without any translation on the client. This includes expressions that result in a constant value. Therefore, data source behavior should be expected for all expressions involving constants. This can result in behavior that differs from CLR behavior.

The following example shows a constant expression that is evaluated on the server.

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 does not support using a user class as a constant. However, a property reference on a user class is considered a constant, and will be converted to a command tree constant expression and executed on the data source.

See Also

Concepts

Expressions in LINQ to Entities Queries