这段代码运行正常:
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));
上述代码在执行时出现了以下错误:
请帮忙解决(对我的糟糕英语表示抱歉)。变量“x”属于类型“myClass”,被作用域引用,但未定义
Sara 编辑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);
}
Where
方法。它是你自己写的还是从某个库中使用的?它似乎对你传递给它的表达式做了一些奇怪的事情。 - jonnystoten