Where子句不与parantheses一起使用

时间:2015-05-16 09:49:19

标签: nhibernate fluent-nhibernate expression-trees queryover

假设使用NH 3.4和RepositoryPattern

进行以下查询
var list = _repository
     .QueryOver()
     .Where(x => (x.Age > 20))  // notice the parantheses
     .Future()
     .ToList();

这些parantheses添加了NH无法正常工作,并导致SO异常。

如果用.Where(x => (x.Age > 20))替换.Where(x => x.Age > 20) 它按预期工作。

有关为什么它不适用于额外的parantheses的任何线索?

注意

从大局来看,这是一个简化的场景。在制作中,我将.Where(...)传递给参数Expression<Func<Person, bool>> where

1 个答案:

答案 0 :(得分:1)

我怀疑错误是存在的:

Expression<Func<MyClass, bool>> mc1 = x => (x.ID > 20);
Expression<Func<MyClass, bool>> mc2 = x => x.ID > 20;

var body1 = mc1.Body.NodeType; // GreatThan
var body2 = mc2.Body.NodeType; // GreatThan

编译器删除括号。表达式树中没有任何内容&#34;语言&#34; (类系统)明确表示括号。