Выражения в запросах LINQ to EntitiesExpressions 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)
    Next
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

Сравнения NULLNull Comparisons

Выражения инициализацииInitialization Expressions

Связи, свойства навигации и внешние ключиRelationships, navigation properties and foreign keys

См. такжеSee also