此代码工作正常:
ICriteria criteria = GetSession().CreateCriteria<MyClass>();
criteria.Add(Restrictions.Where<MyClass>(x => x.Field1 >= myVariable));
但是下面的代码不起作用:
criteria.Add(Restrictions
.Where<MyClass>(x =>
(x.Field1 +
x.Field2 +
x.Field3 +
x.Field4) >= myVariable));
上面的代码在执行中得到这个错误:
从范围“”引用了“myClass”类型的变量“x”,但未定义
请帮忙(对不起我的英语不好)。
萨拉
编辑 1
我的临时解决方案是:
var result = criteria.List<MyClass>();
result.Where(x => (x.Field1 + x.Field2 + x.Field3 + x.Field4 >= myVariable));
和这项工作。我宁愿将 Where 子句放在选择之前...
编辑 2
最终解决方案是(正如@mhoff 所建议的那样):
var result = criteria.List<MyClass>();
result.Where(x => this.GetSum(x) >= myVariable);
... do something ...
... ToList()
private int GetSum(MyClass x) {
return (x.Field1 + x.Field2 + x.Field3 + x.Field4);
}