NHibernate の LINQ プロバイダーを使用して動的クエリを作成しようとしていますが、問題が発生しています。私の理解では、LINQクエリは呼び出されるまで(つまり、ToList()で)延期されたので、次のコードがあります。
string[] filteredIds = new[] { "someIdNotInUse"};
var result = _products
.GetAll()
.Skip(0)
.Take(10);
if (filteredIds != null)
{
result.Where(x => x.Child1.Child2.Any(z => filteredIds.Contains(z.Child3.Id)));
}
var r = result.ToList();
条件ブロックの Where フィルターは適用されません。.ToList を実行すると、予期しないレコードが取得されます。ただし、where フィルターを削除して _products 呼び出しに直接追加すると、期待どおりに機能します。LINQ プロバイダーの仕組みを誤解していますか? 考えられるすべてのフィルター条件と組み合わせに対してクエリを書き直すことなく、このようなクエリを作成するにはどうすればよいでしょうか?