Я пытаюсь динамически создавать выражения на основе объекта Specification.
Я создал класс ExpressionHelper, у которого есть личное выражение, например:
private Expression<Func<T, bool>> expression;
public ExpressionHelper()
{
expression = (Expression<Func<T, bool>>)(a => true);
}
И затем несколько простых методов:
public void And(Expression<Func<T,bool>> exp);
Я борюсь с телом метода И. Я в основном хочу разорвать тело из exp
, заменить все параметры на expression
, а затем добавить его в конец тела expression
как и AndAlso.
Я сделал это:
var newBody = Expression.And(expression.Body,exp.Body);
expression = expression.Update(newBody, expression.Parameters);
Но это заканчивается моим выражением, похожим на это:
{ a => e.IsActive && e.IsManaged }
Есть ли более простой способ сделать это? Или как я могу вырвать эти e и заменить их на?