定数式

定数式は、定数値で構成されています。定数値は、クライアント側で変換されることなく、コマンド ツリーの定数式に直接変換されます。これには、定数値になる式が含まれます。したがって、定数にかかわるすべての式でデータ ソースの動作が、予期したとおりになります。これは 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 クエリ内の式