【问题标题】:Is there an inverse operation to Expression.Lambda?Expression.Lambda 有逆运算吗?
【发布时间】:2013-12-06 12:22:26
【问题描述】:

Expression.Lambda<...>(originalExpression, parameterExpression) 的逆运算是否可以返回原始表达式?

上下文:

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

 return item => item.Something

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

expression= Expression.Not(expression);

到它,然后再次将它包装到一个 lambda。

这可能吗?

【问题讨论】:

    标签: c# expression-trees


    【解决方案1】:

    LambdaExpression.Body是你原来的表达方式,所以你可以这样做

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

    【讨论】:

    • 谢谢!我在参数方面苦苦挣扎,我在 Lambda 调用中传递了一个新的 ParameterExpression(参数的数量和类型相同),显然我必须传递 lambda 正在使用的相同参数实例。
    • @TomasGrosup: I had that problem myself 过去 ;-)
    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 2016-06-19
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多