Поделиться через


Выражения в запросах LINQ to Entities

Выражение представляет собой фрагмент кода, результатом вычисления которого является единственное значение, объект, метод или пространство имен. Выражение может содержать литеральное значение, вызов метода, оператор с операндами или простое имя. Простые имена могут быть именами переменной, элемента типа, параметра метода, пространства имен или типа. В выражениях могут использоваться операторы, которые, в свою очередь, используют в качестве параметров другие выражения или вызовы методов, параметрами которых являются другие вызовы методов. Таким образом, выражения могут быть как простыми, так и очень сложными.

В запросах LINQ to Entity выражения могут содержать все, что разрешено типами в System.Linq.Expressions пространстве имен, включая лямбда-выражения. Выражения, которые можно использовать в запросах LINQ to Entity, являются супермножеством выражений, которые можно использовать для запроса Entity Framework. Выражения, которые являются частью запросов к Entity Framework, ограничены операциями, поддерживаемыми ObjectQuery<T> и базовым источником данных.

В следующем примере сравнение в предложении Where является следующим выражением.

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.

В этом разделе

Константные выражения

Выражения сравнения

Сравнения NULL

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

Связи, свойства навигации и внешние ключи

См. также