我正在尝试对RelatedProducts对象列表执行LINQ查询。我必须按CategoryId对它们进行分组,所以我使用group by子句。不幸的是,我刚才意识到我不能简单地在最后使用'select g.Value'。该组是一个IGrouping,我想在这里只返回RelatedProduct。我怎么能这样做?
同样在我的情况下,产品可以同时分为两类,那么如何防止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;
答案 0 :(得分:0)
在您的情况下,g
为IEnumerable
,因此您只需使用select g.First()
或对其应用任何类型的附加过滤。
答案 1 :(得分:-2)
我设法做到了这样:
List<RelatedProduct> relatedProducts = new List<RelatedProduct>();
foreach (var group in query)
{
var key = group.Key;
relatedProducts.AddRange(group.ToList());
}