Compartir a través de


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 uncheckedde C#, no tienen ningún significado en LINQ to Entities.

En esta sección

Expresiones constantes

Expresiones de comparación

Comparaciones NULL

Expresiones de inicialización

Relaciones, propiedades de navegación y claves externas

Consulte también