Product
和ProductCategory
表通过多对多表ProductToCategory
“连接”。
对于某些带有一些ID的产品(我们将其标记为 product_1 ),我需要获得与 product_1 类别的下一个产品>
我想用一个查询执行此操作,因此以下查询可以正常工作,但sql-profiler显示非常大的查询。有没有建议如何重写查询?
(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();
答案 0 :(得分:0)
注意:我想是什么时候说的
我需要获得与product_1属于同一类别的下一个产品。
真正意味着什么
我需要获得product_1类别的下一个产品。
(from p in ctx.Products
join c in cts.ProductsToCategories on c.ProductId
join c2 in cts.ProductsToCategories on c.CategoryId = c2.CategoryId
join p2 in ctx.Products on c2.ProductId = p2.id
where
p2.Id == id &&
p2 != p
orderby p).FirstOrDefault();
答案 1 :(得分:0)
我建议您在数据库中创建一个名为NextProductInCategory的视图,然后使用简单的linq查询来检索您想要的内容。