Expression.Lambda是否有反向操作?

时间:2013-12-06 12:22:27

标签: c# expression-trees

是否存在与Expression.Lambda<...>(originalExpression, parameterExpression)相反的操作,它会返回原始表达式?

上下文:

我正在使用lambda语法创建一个lambda表达式(根本不使用Expression类),如下所示:

 return item => item.Something

在应用程序的不同层,我想“un-lambda”这个表达式,应用

expression= Expression.Not(expression);

然后将它再次包装到lambda。

这可能吗?

1 个答案:

答案 0 :(得分:4)

LambdaExpression.Body是您的原始表达,因此您可以

var inverted = Expression.Lambda(Expression.Not(lambda.Body), lambda.Parameters);