Expressões em consultas LINQ to Entities
Uma expressão é um fragmento de código que pode ser avaliado para 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. Nomes simples podem ser o nome de uma variável, membro do tipo, parâmetro do método, namespace ou tipo. As expressões podem usar operadores que, por sua vez, usam outras expressões como parâmetros, ou chamadas de método cujos parâmetros são, por sua vez, outras chamadas de método. Portanto, as expressões podem variar de simples a muito complexas.
Nas consultas LINQ to Entities, as expressões podem conter qualquer coisa permitida pelos tipos dentro do System.Linq.Expressions namespace, 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 de consultas no Entity Framework são limitadas a operações suportadas por ObjectQuery<T>
e à fonte de dados subjacente.
No exemplo a seguir, a Where
comparação na cláusula é 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
Nota
Construções de linguagem específicas, como C# unchecked
, não têm significado em LINQ to Entities.
Nesta Secção
Relações, propriedades de navegação e teclas estrangeiras