Product
およびProductCategory
テーブルは、多対多テーブルProductToCategory
を介して「接続」されています。いくつかのIDを持ついくつかの製品については多対多のテーブルが関係する最小linqクエリを書くにはどうすればいいですか?
(のはproduct_1としてそれをマークしてみましょう)私はproduct_1と同じカテゴリの次の製品を取得する必要があります。
というクエリでこれを実行したかったので、次のクエリは機能しますが、SQLプロファイラは非常に巨大なクエリを示しています。クエリを書き直す方法はありますか?
(from p in cxt.Products
join c in cxt.ProductToCategories on p.Id equals c.ProductId
where p.Id > id && c.CategoryId == (from p2 in cxt.Products
join c2 in cxt.ProductToCategories on p.Id equals c.ProductId
where p2.Id == id
select c2.CategoryId).FirstOrDefault()
orderby p.Id
select p).FirstOrDefault();
これはちょっとあいまいだと思うので、データサンプルを投稿してください:商品とカテゴリーの次の商品のことを言っています(同じカテゴリは1つのカテゴリを意味しますが、これはam:nそれらは複数のカテゴリに分類されます) – danihp