我正在嘗試對相關產品對象列表執行LINQ查詢。我必須按CategoryId對它們進行分組,因此我使用了group by子句。不幸的是,我只是意識到我不能簡單地在最後使用'select g.Value'。該組是一個IGrouping,我想在這裏返回RelatedProduct。我怎樣才能做到這一點?如何在LINQ中進行分組
同樣在我的情況下,一個產品可以同時在兩個類別,所以我怎樣才能防止LINQ返回重複?我只對第一類感興趣(實際上,只要它被分配給該產品,這並不重要)。
var query = from rp in context.RelatedProducts
join p in context.Products on rp.ProductId2 equals p.ProductId
join pc in context.ProductCategories on p.ProductId equals pc.ProductId
where rp.ProductId1 == productId1 &&
!p.Deleted &&
(showHidden || p.Published)
orderby rp.DisplayOrder
group rp by pc.CategoryId into g
select g;
如果你只在第一類感興趣,那麼爲什麼不直接加在那裏pc.CategoryId == interestingcategory而不是分組,然後丟棄以外的所有組首先? – 2010-11-03 11:23:42
當我說有更多的類別我的意思是產品和類別之間有多對多的關係。這就是我正在處理的數據庫的結構。我實際上只使用每種產品的一個類別。 – 2010-11-03 11:28:02