0

私は 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(内部を使用しSearchCategoriesSelectMany)少し最適化したいと思います...しかし、機能させることはできません。これを試しましたが、エラーが発生します

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ですか?

ありがとうございました!

4

1 に答える 1