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
Relações, propriedades de navegação e chaves estrangeiras