C# 如何在LINQ中合并GroupBy的结果
我想按产品ID过滤C# 如何在LINQ中合并GroupBy的结果,c#,linq,C#,Linq,我想按产品ID过滤IEnumerable,但我想在结果中包含产品的所有注释 public class Product { public int ProductId { get; set; } public decimal Quantity { get; set; } public List<ProductComments> Comments { get; set; } } 公共类产品 { public int ProductId{get;set;} 公共十进
IEnumerable
,但我想在结果中包含产品的所有注释
public class Product
{
public int ProductId { get; set; }
public decimal Quantity { get; set; }
public List<ProductComments> Comments { get; set; }
}
公共类产品
{
public int ProductId{get;set;}
公共十进制数量{get;set;}
公共列表注释{get;set;}
}
例如:
我有3种产品
编号:1,数量:10,备注:2
编号:1,数量:20,备注:1
编号:2,数量:5,备注:1
我现在看到的是以下结果:
Id:1,数量:30,注释:3(我想要这里的实际对象,而不仅仅是计数)
编号:2,数量:5,备注:1
如何使用LINQ实现这一点?我认为这里的方法是使用GroupBy
谢谢 这将根据需要对您的输入进行分组:
var grouped = products.GroupBy(x => x.ProductId).Select(x => new
{
Id = x.Key,
Quantity = x.Sum(y => y.Quantity),
Comments = x.SelectMany(y => y.Comments)
});
代码用于计算所有数量的总和,并将注释列表合并为一个
在线演示:您使用Linq和
GroupBy尝试了什么?如何使用iSyncEnumerable?SelectMany和SelectManyAwait似乎不适用于这些。但实际上,这是另一个问题。您询问如何使用列表执行此操作。