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

Linq查询帮助

   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中的多字段分组是通过匿名类型实现的。