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 FrameworkEntity Frameworkします。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 FrameworkEntity Framework. 式に対するクエリの一部である、Entity FrameworkEntity Frameworkでサポートされる操作に制限されてObjectQuery<T>と基になるデータ ソース。Expressions that are part of queries against the Entity FrameworkEntity 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