Compartilhar via


Expressões em consultas LINQ to Entities

Uma expressão é um fragmento de código que pode ser avaliado como um único valor, objeto, método ou namespace. As expressões podem conter um valor literal, uma chamada de método, um operador e seus operandos ou um nome simples. Os nomes simples podem ser o nome de uma variável, um membro de tipo, um parâmetro de método, um namespace ou um tipo. As expressões podem usar operadores que, por sua vez, usam outras expressões como parâmetros ou chamadas de métodos cujos parâmetros são, por sua vez, outras chamadas de métodos. Portanto, as expressões podem variar de simples a muito complexas.

Em consultas do LINQ to Entities, as expressões podem conter tudo o que for permitido pelos tipos no namespace System.Linq.Expressions, incluindo expressões lambda. As expressões que podem ser usadas em consultas LINQ to Entities são um superconjunto das expressões que podem ser usadas para consultar o Entity Framework. As expressões que fazem parte das consultas no Entity Framework são limitadas a operações suportadas por ObjectQuery<T> e pela fonte de dados subjacente.

No exemplo a seguir, a comparação na cláusula Where é uma expressão:

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

Observação

Os constructos de linguagem específicos, como C# unchecked, não têm significado no LINQ to Entities.

Nesta seção

Expressões constantes

Expressões de comparação

Comparações nulas

Expressões de inicialização

Relações, propriedades de navegação e chaves estrangeiras

Confira também