データベースのクエリに使用している EF Code First Db コンテキストがあります。Aggregate Repository から sとしてクエリを渡すときにいくつかのパフォーマンスの問題に気付き、Func<Product, bool>
さらに調査したところ、クエリが SQL クエリに変換されていないことが判明しました。
もう少し掘り下げた後、私は次のことを発見しました。
var results = _context.Products
.Where(p => p.ProductCode.Contains("AAA"))
.Where(p => p.CategoryId == 1)
.ToList();
これは期待どおりに機能します。Where句を使用して、パラメータ化されたSQLを生成します。
================================================== ================
var results2 = _context.Products
.Where(p => p.ProductCode.Contains("AAA") && p.CategoryId == 1)
.ToList();
これも期待どおりに機能します。上記と同じSQLを生成します
================================================== ================
Func<Product, bool> pred = (p => p.ProductCode.Contains("AAA") && p.CategoryId == 1);
var results3 = _context.Products.Where(pred).ToList();
これは壊れています。SQL で where 句を生成するのではなく、すべてを返し、コードでフィルター処理します。