このコードは正常に動作します:
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);
}