Замена имени параметра в теле выражения

Я пытаюсь динамически создавать выражения на основе объекта Specification.

I ' Мы создали класс ExpressionHelper, который имеет частное выражение вроде такого:

private Expression<Func<T, bool>> expression;

public ExpressionHelper()
{
    expression = (Expression<Func<T, bool>>)(a => true);
}

А затем несколько простых методов, как показано ниже:

public void And(Expression<Func<T,bool>> exp);

Я борюсь с телом метода And. Я в принципе хочу тело вырвать из exp , замените все параметры параметрами в выражение , а затем добавьте его в конец тела выражения как и AndAlso.

Я сделал это:

var newBody = Expression.And(expression.Body,exp.Body);

expression = expression.Update(newBody, expression.Parameters);

Но на этом все закончилось вверх с моим выражением лица, выглядящим следующим образом:

{ a => e.IsActive && e.IsManaged }

Есть ли более простой способ сделать это? Или как мне вырвать эти е и заменить их на?

11
задан Robert Fall 30 December 2016 в 12:05
поделиться