我有这样的模式:LINQ到SQL - 分组,并加入
Products (**ProductId**, OwnerId, Name)
Categories (**CategoryId**, Name)
ProductsInCategories(**ProductId**, CategoryId)
当我想返回类别列表中的LINQ很简单:
from c in db.Categories
orderby c.Name
select c;
不过,我想仅返回包含具有特定OwnerId的产品的类别集合。
如果这是正常的T-SQL话,我能做到这一点很容易不够:
SELECT ProductsInCategories.CategoryId
FROM ProductsInCategories
INNER JOIN Categories ON ProductsInCategories.CategoryId = ProductsInCategories.CategoryId
INNER JOIN Products ON ProductsInCategories.ProductId = Products.ProductId
WHERE Products.OwnerId = 3
GROUP BY ProductsInCategories.CategoryId
(但是我注意到这个SQL只返回类别ID而不是类别名称为好,最好我想退货两者)
然而,当我将它转换为LINQ的它不工作了:
from pic in db.ProductsInCategories
join p in db.Products on pic.ProductId equals p.ProductId
join c in db.Categories on pic.CategoryId equals c.CategoryId
orderby c.Name
where p.OwnerId == ownerId
select c;
LinqPad报告它返回包含了大量的重复耳鼻喉科大型结果集ries(对于每个产品类别映射重复类别名称)。
这里有什么解决方案?
谢谢!
是SQL不会因与该组运行并选择了这样的 – Joe
我已经修复了SQL。感谢您指出了这一点。 – Dai