C# · Avançado · Inglês · Técnico
expression tree
Representação em objetos da estrutura de um código, como uma lambda, em Expression<T>. Provedores como o EF Core a inspecionam para traduzi-la em outra linguagem, como SQL.
Onde usar
Aparece quando uma lambda é atribuída a Expression<Func<...>> em vez de Func, como nos filtros do EF Core. Como o código vira dados, dá para analisar, reescrever ou compilar a expressão em runtime.
Em código
using System.Linq.Expressions;
Expression<Func<int, bool>> e = n => n > 5;
Console.WriteLine(e.Body); // (n > 5)
var f = e.Compile();
Console.WriteLine(f(9)); // TrueExemplos
EF Core reads the expression tree to build the SQL.
O EF Core lê a expression tree para montar o SQL.
Declare the parameter as an Expression, not a Func.
Declare o parâmetro como Expression, e não como Func.
Cuidado
Não é possível colocar qualquer código C# numa expression tree: lambdas com corpo em bloco, por exemplo, não são aceitas.
Sinônimos
árvore de expressão