Expresiones en consultas de LINQ to Entities
Una expresión es un fragmento de código que se puede evaluar como un valor, objeto, método o espacio de nombres único. Las expresiones pueden contener un valor literal, una llamada a un método, un operador y sus operandos, o un nombre simple. Los nombres simples pueden ser el nombre de una variable, el miembro de un tipo, el parámetro de un método, un espacio de nombres o un tipo. Las expresiones pueden utilizar operadores que a su vez utilizan otras expresiones como parámetros, o llamadas a métodos cuyos parámetros son a su vez otras llamadas a métodos. Por consiguiente, las expresiones pueden ser de muy simples a muy complejas.
En las consultas de LINQ to Entities, las expresiones pueden contener cualquier elemento permitido por los tipos dentro del espacio de nombres System.Linq.Expressions, incluyéndose las expresiones lambda. Las expresiones que se pueden usar en las consultas LINQ to Entities son un superconjunto de las expresiones que se pueden usar para consultar Entity Framework. Las expresiones que forman parte de las consultas en Entity Framework se limitan a las operaciones admitidas por ObjectQuery<T>
y el origen de datos subyacente.
En el ejemplo siguiente, la comparación en la cláusula Where
es una expresión:
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
Las estructuras de un lenguaje concreto, como unchecked
de C#, no tienen ningún significado en LINQ to Entities.
En esta sección
Relaciones, propiedades de navegación y claves externas