C# Linq查询帮助
是否有一种方法可以编写一个Linq语句来查找B列中的重复项,并且仅在a列具有重复值时才查找它,然后将B列的值添加到找到重复项的列中。谢谢你的帮助C# Linq查询帮助,c#,asp.net,linq,C#,Asp.net,Linq,是否有一种方法可以编写一个Linq语句来查找B列中的重复项,并且仅在a列具有重复值时才查找它,然后将B列的值添加到找到重复项的列中。谢谢你的帮助 RecordID CartID Quantity ProductID 1 11 3 3 2 12 5 6 3 11 6 3 删除记录3并将6添加到记录I
RecordID CartID Quantity ProductID
1 11 3 3
2 12 5 6
3 11 6 3
删除记录3并将6添加到记录ID 1的数量中,使其成为:
RecordID CartID Quantity ProductID
1 11 9 3
2 12 5 6
这将汇总具有相同CartId的所有项目的数量,并按照您的要求仅创建最小发生记录ID和ProductId。选择minproductid是使查询正常工作所需的操作
这就是为什么我认为你错过了ProductId上的一些分组
你没有要求这个,但我认为这是你想要的(因为不把苹果和梨放在一起是常识)。(对于提供的样本数据,它给出了相同的结果,但对于不同的产品,它将产生不同的结果
var records = (from i in list
group i by new { cartID = i.CartID, prodID = i.ProductID } into g
select new Item()
{
RecordID = g.Min(o => o.RecordID),
CartID = g.Key.cartID,
Quantity = g.Sum(o => o.Quantity),
ProductID = g.Key.prodID
}).ToList();
此组按CartID和ProductId进行分组。Linq中的多字段分组是通过匿名类型实现的
这将对具有相同CartId的所有项目的数量求和,并按照您的要求仅创建min occurent RecordId和ProductId。选择min ProductId是使查询正常工作所需的操作
这就是为什么我认为你错过了ProductId上的一些分组
你没有要求这样做,但我认为这是你想要的(因为不将苹果和梨归为一类是常识)。(它对提供的样本数据给出了相同的结果,但对于不同的产品,它会有不同的结果
var records = (from i in list
group i by new { cartID = i.CartID, prodID = i.ProductID } into g
select new Item()
{
RecordID = g.Min(o => o.RecordID),
CartID = g.Key.cartID,
Quantity = g.Sum(o => o.Quantity),
ProductID = g.Key.prodID
}).ToList();
这将按CartID和ProductId进行分组。Linq中的多字段分组是通过匿名类型实现的。“将B列的值添加到找到重复项的列中”这是什么意思?“将B列的值添加到找到重复项的列中”这是什么意思?+1表示使用.GroupBy,还表示作者可能希望按CartId+ProductId进行分组。+1表示使用.GroupBy,还表示作者可能希望按CartId+ProductId进行分组。