LINQ to Entities クエリ内の式Expressions in LINQ to Entities Queries

式は、単一の値、オブジェクト、メソッド、または名前空間として評価されるコード フラグメントです。An expression is a fragment of code that can be evaluated to a single value, object, method, or namespace. 式には、リテラル値、メソッド呼び出し、演算子とそのオペランド、または単純な名前を含めることができます。Expressions can contain a literal value, a method call, an operator and its operands, or a simple name. 単純な名前には、変数、型メンバー、メソッド パラメーター、名前空間、または型の名前を指定できます。Simple names can be the name of a variable, type member, method parameter, namespace or type. 式では、他の式をパラメーターとして使用する演算子、またはパラメーターが他のメソッド呼び出しであるメソッド呼び出しを使用できます。Expressions can use operators that in turn use other expressions as parameters, or method calls whose parameters are in turn other method calls. したがって、単純な式だけでなく、非常に複雑な式も作成できます。Therefore, expressions can range from simple to very complex.

LINQ to Entities のクエリの式では、ラムダ式など、System.Linq.Expressions 名前空間内の型で許容されている要素であれば何でも使用できます。In LINQ to Entities queries, expressions can contain anything allowed by the types within the System.Linq.Expressions namespace, including lambda expressions. LINQ to Entities のクエリで使用可能な式は、Entity Framework のクエリに使用可能な式のスーパーセットです。Entity Framework に対するクエリの一部である式は、ObjectQuery<T> および基になるデータ ソースでサポートされている演算に制限されます。The expressions that can be used in LINQ to Entities queries are a superset of the expressions that can be used to query the Entity Framework.Expressions that are part of queries against the Entity Framework are limited to operations supported by ObjectQuery<T> and the underlying data source.

次の例では、Where 句で使用される比較の式を示します。In the following example, the comparison in the Where clause is an expression:

Decimal totalDue = 200;
using (AdventureWorksEntities context = new AdventureWorksEntities())
    IQueryable<int> salesInfo =
        from s in context.SalesOrderHeaders
        where s.TotalDue >= totalDue
        select s.SalesOrderID;

    Console.WriteLine("Sales order info:");
    foreach (int orderNumber in salesInfo)
        Console.WriteLine("Order number: " + orderNumber);
Dim totalDue = 200
Using context As New AdventureWorksEntities()
    Dim salesInfo = _
        From s In context.SalesOrderHeaders _
        Where s.TotalDue >= totalDue _
        Select s.SalesOrderID

    Console.WriteLine("Sales order info:")
    For Each orderNumber As Integer In salesInfo
        Console.WriteLine("Order number: " & orderNumber)
End Using


C# の unchecked などの特殊な言語構造は、LINQ to Entities では意味がありません。Specific language constructs, such as C# unchecked, have no meaning in LINQ to Entities.

このセクションの内容In This Section

定数式Constant Expressions

比較式Comparison Expressions

NULL 比較Null Comparisons

初期化式Initialization Expressions

リレーションシップ、ナビゲーション プロパティ、および外部キーRelationships, navigation properties and foreign keys

関連項目See also