Where 子句不适用于括号

Where clause not working with parantheses

假设以下查询使用 NH 3.4 和 RepositoryPattern

var list = _repository
     .QueryOver()
     .Where(x => (x.Age > 20))  // notice the parantheses
     .Future()
     .ToList();

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

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

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

备注

这是大局的简化场景。在生产中,我通过参数 Expression<Func<Person, bool>> where

传递 .Where(...)

我怀疑错误在那里:

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

括号已被编译器删除。表达式树 "language"(class 系统)中没有任何内容可以显式表示括号。