Substituindo o nome do parâmetro no corpo de uma expressão
Estou tentando criar expressões dinamicamente com base em um objeto Specificatio
Eu criei uma classe ExpressionHelper que possui uma Expression privada assim:
private Expression<Func<T, bool>> expression;
public ExpressionHelper()
{
expression = (Expression<Func<T, bool>>)(a => true);
}
E, em seguida, alguns métodos fáceis da seguinte maneira:
public void And(Expression<Func<T,bool>> exp);
Estou lutando com o corpo do método And. Basicamente, quero arrancar o corpo deexp
, substitua todos os parâmetros pelos deexpression
e depois anexá-lo ao final doexpression
corpo como e AndAlso.
Eu fiz isso:
var newBody = Expression.And(expression.Body,exp.Body);
expression = expression.Update(newBody, expression.Parameters);
Mas isso acaba com minha expressão assim:
{ a => e.IsActive && e.IsManaged }
Existe uma maneira mais simples de fazer isso? Ou como posso retirar esses e's e substituí-los por a's?