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


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

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

Выражения в запросах LINQ to Entities могут содержать любые объекты, допустимые типами в пространстве имен System.Linq.Expressions, включая лямбда-выражения. Набор выражений, используемых в запросах LINQ to Entities, является надмножеством выражений, которые могут использоваться в запросах Entity Framework. Выражения, входящие в запросы к Entity Framework, ограничены набором операций, поддерживаемых 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);                    
    }
}
NoteПримечание.

Особые языковые конструкции, такие как unchecked в C#, в LINQ to Entities значения не имеют.

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

См. также

Другие ресурсы

Выполнение запросов с помощью LINQ to Entities