【发布时间】:2014-01-27 13:30:17
【问题描述】:
假设我们这样表达:
someIQueryable.Where(x => x.SomeBoolProperty)
someIQueryable.Where(x => !x.SomeBoolProperty)
我需要将上面的表达式(使用表达式访问者重写)转换为这样的表达式:
someIQueryable.Where(x => x.SomeBoolProperty == true)
someIQueryable.Where(x => x.SomeBoolProperty != true)
注意:如果我们有更复杂的表达式,重写器也必须在更一般的情况下工作:
someIQueryable.Where((x => x.SomeBoolProperty && x.SomeIntProperty > 0) || !x.SomeOtherBoolProperty))
【问题讨论】:
-
您只是要求一个完整的、有效的解决方案吗?你试过什么?
-
你想达到什么目的?区别在哪里?它将被翻译成相同的查询。
-
你为什么要这样做?
-
是的,我正在将其转换为 SQL 查询。但不幸的是,当我翻译它们时,结果查询无效
-
@Gor 就个人而言,我会说“修复你的提供商”;p
标签: c# linq expression expressionvisitor