こんにちは。Linq to Entities を使用して取得した IQueryable オブジェクトの Where 句拡張メソッド内でブール演算を使用する際に問題が発生しています。最初の例は、Where 句の拡張メソッドに移動する必要がある操作として Bool1 を使用して何が機能するかを示しています。2 番目の例は、変更後に機能しないものです。Bool1 は完全に無視され、結果には影響しません。
例 1:
var results =
from a in context.aTable1
where a.Bool1 == false && a.Bool2 == false
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results.Where(l => l. Column1.Contains(fooString));
例 2:
var results =
from a in context.aTable1
where a.Bool2 == false
select new
{
Column1 = a.Column1
Bool1 = a.Bool1
Bool2 = a.Bool2
};
results.Where(l => l.Bool1 == false);
results.Where(l => l. Column1.Contains(fooString));
これらは単純化された例ですが、私がやろうとしていることを示してくれることを願っています. where 拡張メソッドは別のメソッドにあり、元のクエリを作成しているときに実行できない理由です。
そのwhere句で同じことを行う次の他の方法を試しました:
results.Where(l => !l.Bool1);
results.Where(l => l.Bool1.Equals(false));
それらは何もない同じ効果を持っています。