有没有办法编写Linq语句来查找B列中的重复,并且只有在A列具有重复值时才能找到它,然后将列B的值添加到找到重复的列.任何帮助表示赞赏谢谢.
RecordID CartID Quantity ProductID
1 11 3 3
2 12 5 6
3 11 6 3
Run Code Online (Sandbox Code Playgroud)
删除记录3并将6添加到RecordID 1的数量,使其变为:
RecordID CartID Quantity ProductID
1 11 9 3
2 12 5 6
Run Code Online (Sandbox Code Playgroud)
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();
Run Code Online (Sandbox Code Playgroud)
这会将所有具有相同CartId的项目数量相加,只会根据您的要求创建最小的事件RecordId和ProductId.选择min ProductId是我需要做的事情,以使查询工作.
这就是为什么我认为你错过了一些关于ProductId的分组 ......
你没有要求这个,但我认为这就是你想要的(因为不将苹果和梨组合在一起是常识).(它对提供的样本数据给出了相同的结果,但对于不同的ProductsIds,它会有不同的结果.
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();
Run Code Online (Sandbox Code Playgroud)
这是按CartID和ProductId分组的.Linq中的多字段分组是通过匿名类型实现的.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |