Partager via


Expressions dans les requêtes LINQ to Entities

Une expression est un fragment de code qui peut correspondre à une valeur, un objet, une méthode ou un espace de noms. Elle peut contenir une valeur littérale, un appel de méthode, un opérateur et ses opérandes ou un nom simple. Un nom simple peut être le nom d'une variable, d'un membre de type, d'un paramètre de méthode, d'un espace de noms ou d'un type. Les expressions peuvent utiliser des opérateurs qui à leur tour utilisent d'autres expressions comme des paramètres, ou des appels de méthode dont les paramètres sont à leur tour d'autres appels de méthode. Par conséquent, les expressions peuvent être simples ou très complexes.

Dans les requêtes LINQ to Entities, les expressions peuvent contenir tout élément autorisé par les types de l’espace de noms System.Linq.Expressions, y compris des expressions lambda. Les expressions utilisables dans les requêtes LINQ to Entities sont un surensemble des expressions permettant d’interroger Entity Framework. Les expressions faisant partie des requêtes sur Entity Framework sont limitées aux opérations prises en charge par ObjectQuery<T> et à la source de données sous-jacente.

Dans l'exemple suivant, la comparaison dans la clause Where est une expression :

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

Notes

Les constructions de langage spécifiques, telles que C# unchecked, n’ont aucune signification dans LINQ to Entities.

Dans cette section

Expressions de constantes

Expressions de comparaison

Comparaisons null

Expressions d’initialisation

Relations, propriétés de navigation et clés étrangères

Voir aussi