私は EF と LINQ の初心者で、製品 ID で (フィルターを使用して) カテゴリのリストを取得したいと考えています。
したがって、多対多の関係がProduct * <---> * Category
あり、次のコードを使用します。
var categList = dbContext.Products
.Where(prod => prod.PROD_UID == 1234)
.SelectMany(prod => prod.Categories)
.Distinct();
categList = SearchCategories(filter, categList);
categList = SortCategories(filter, categList);
categList = PageCategories(filter, categList);
whereSearchCategories
は一部のコードを再利用するために使用され、以下のようになります
IQueryable<Category> SearchCategories(MyFilter filter, IQueryable<Category> source = null)
{
source = source ?? this.dbContext.Categories;
return source.Where(cat => [...filtering...] );
}
これは問題ないように見えますが、内部でフィルタリングしてSelectMany
(内部を使用しSearchCategories
てSelectMany
)少し最適化したいと思います...しかし、機能させることはできません。これを試しましたが、エラーが発生します
var categList = dbContext.Products
.Where(prod => prod.PROD_UID == 1234)
.SelectMany(cat => SearchCategories(filter, prod.Categories.AsQueryable()).AsEnumerable());
// throws LINQ to Entities does not recognize the method 'SearchCategories'
内部のカテゴリをフィルタリングするにはどうすればよいSelectMany
ですか?
ありがとうございました!