Arbres d’expressions
Contexte : Les arbres d’expressions représentent les expressions lambda sous forme de structures de données (arbres syntaxiques abstraits). Ils sont utilisés pour analyser, modifier ou traduire des lambdas (par exemple en SQL).
using System.Linq.Expressions;
Expression<Func<int, int>> expr = x => x * 2;Console.WriteLine(expr); // x => (x * 2)
// Compilation et invocationFunc<int, int> compiled = expr.Compile();Console.WriteLine(compiled(5)); // 10Inspection d’un arbre d’expressions
Section intitulée « Inspection d’un arbre d’expressions »var body = expr.Body as BinaryExpression;Console.WriteLine(body.NodeType); // MultiplyConstruction manuelle d’expressions
Section intitulée « Construction manuelle d’expressions »ParameterExpression param = Expression.Parameter(typeof(int), "x");ConstantExpression constant = Expression.Constant(2);BinaryExpression multiply = Expression.Multiply(param, constant);Expression<Func<int, int>> expr2 = Expression.Lambda<Func<int, int>>(multiply, param);Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Traduction de requêtes ORM : Entity Framework Core convertit les requêtes LINQ (arbres d’expressions) en SQL.
Exemple : Documentation EF Core sur les requêtes utilise les arbres d’expressions pour traduire Where(x => x.Id == 1) en WHERE [Id] = 1.