从范围''引用的'myClass'类型的错误变量'x',但未定义

时间:2012-08-16 12:46:32

标签: c# fluent-nhibernate restrictions

此代码可以正常工作:

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);
}

1 个答案:

答案 0 :(得分:0)

如何将计算转换为属性(这也有利于封装MyClass细节):

public class MyClass
{
    public int GetSum
    {
        get { return Field1 + Field2 + Field3 + Field4; }
    }
}

criteria.Add(Restrictions.Where<MyClass>(x => x.GetSum > myVariable));