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 系统)中没有任何内容可以显式表示括号。
假设以下查询使用 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 系统)中没有任何内容可以显式表示括号。