Linq查询帮助
本文关键字:帮助 查询 Linq | 更新日期: 2023-09-27 17:59:32
是否有一种方法可以编写一个Linq语句来查找B列中的重复,并且只有在a列有重复值时才能找到它,然后将B列的值添加到找到重复的列中。感谢您的帮助。
RecordID CartID Quantity ProductID
1 11 3 3
2 12 5 6
3 11 6 3
删除记录3并在记录ID 1的数量中添加6,使其变为:
RecordID CartID Quantity ProductID
1 11 9 3
2 12 5 6
var records = (from i in list
group i by i.CartID into g
select new Item()
{
RecordID = g.Min(o => o.RecordID),
CartID = g.Key,
Quantity = g.Sum(o => o.Quantity),
ProductID = g.Min(o => o.ProductID)
}).ToList();
这是具有相同CartId的所有项目数量的总和,只创建您要求的最小出现次数RecordId和ProductId。选择最小ProductId是我需要做的事情,以使查询工作。
这就是为什么我认为您错过了ProductId上的一些分组。。。
你没有要求这个,但我认为这就是你想要的(因为不把苹果和梨放在一起是常识)。(它在提供的样本数据上给出了相同的结果,但对于不同的产品ID,它将具有不同的结果。
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中的多字段分组是通过匿名类型实现的。