定数式
定数式は、定数値で構成されています。 定数値は、クライアント側で変換されることなく、コマンド ツリーの定数式に直接変換されます。 これには、定数値になる式が含まれます。 したがって、定数にかかわるすべての式でデータ ソースの動作が、予期したとおりになります。 これは 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 では、ユーザー クラスを定数として使用することはできません。 ただし、ユーザー クラスのプロパティ参照は定数と見なされます。そのため、コマンド ツリーの定数式に変換され、データ ソースで実行されます。