我有這樣的模式: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