C# Linq查询帮助

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

是否有一种方法可以编写一个Linq语句来查找B列中的重复项,并且仅在a列具有重复值时才查找它,然后将B列的值添加到找到重复项的列中。谢谢你的帮助

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进行分组。