LINQ to Entities クエリ内の式
式は、単一の値、オブジェクト、メソッド、または名前空間として評価されるコード フラグメントです。式には、リテラル値、メソッド呼び出し、演算子とそのオペランド、または単純な名前を含めることができます。単純な名前には、変数、型メンバ、メソッド パラメータ、名前空間、または型の名前を指定できます。式では、他の式をパラメータとして使用する演算子、またはパラメータが他のメソッド呼び出しであるメソッド呼び出しを使用できます。したがって、単純な式だけでなく、非常に複雑な式も作成できます。
LINQ to Entities クエリの式には、ラムダ式など、System.Linq.Expressions 名前空間内の型で許容されている要素であれば何でも使用できます。LINQ to Entities クエリで使用可能な式は、エンティティ フレームワーク に対してクエリを実行するために使用可能な式のスーパーセットです。エンティティ フレームワーク に対するクエリの一部である式は、ObjectQuery<T> および基になるデータ ソースでサポートされている演算に制限されます。
次の例では、Where 句で使用される比較の式を示します。
Using AWEntities As New AdventureWorksEntities()
Dim sales As ObjectQuery(Of SalesOrderHeader) = AWEntities.SalesOrderHeader
Dim salesInfo = _
From s In sales _
Where s.TotalDue >= 200 _
Select s.SalesOrderID
Console.WriteLine("Sales order info:")
For Each orderNumber As Integer In salesInfo
Console.WriteLine("Order number: " & orderNumber)
Next
End Using
using (AdventureWorksEntities AWEntities = new AdventureWorksEntities())
{
ObjectQuery<SalesOrderHeader> sales = AWEntities.SalesOrderHeader;
IQueryable<int> salesInfo =
from s in sales
where s.TotalDue >= 200
select s.SalesOrderID;
Console.WriteLine("Sales order info:");
foreach (int orderNumber in salesInfo)
{
Console.WriteLine("Order number: " + orderNumber);
}
}
[!メモ]
C# の unchecked などの特殊な言語構造は、LINQ to Entities では意味がありません。