c# - Expression.Lambda 有逆运算吗?

标签 c# expression-trees

Expression.Lambda<...>(originalExpression, parameterExpression)是否有逆运算那会给我返回原始表达式吗?

上下文:

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

 return item => item.Something

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

expression= Expression.Not(expression);

然后再将其包装到 lambda 中。

这可能吗?

最佳答案

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

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

关于c# - Expression.Lambda 有逆运算吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423829/

相关文章:

c# - 类库中的 Razor,缺少智能感知

c# - 事件处理程序中抛出的 WPF 异常被吞噬了吗?

c# - 字段的详细 XML 文档。有可能吗?

c# - 使用 DI/autofac 避免嵌套服务定位器反模式

c# - 如何测试表达式是否短路

.net - 编译器通过位移操作将按位 AND 添加到表达式树中

c# - 如果在 View 构造函数中填充,ObservableCollection<T> 会触发 SelectionChanged 事件

c# - 编译表达式树性能

c# - 在表达式树中调用实例方法的最佳方式?

c# - 使用表达式树通过代理现有实现来实现接口(interface)