我正在尝试对相关产品对象列表执行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