首页 新闻 会员 周边 捐助

关于一个list的代码怎么写,有大神可知?

0
悬赏园豆:80 [待解决问题]

实体类PubGoods:goodsId(商品ID), goodsQty(商品数量),prodate(生产日期),字段

现在有给集合List<PubGoods>中有无数字段

需求:将所有商品ID相同的,商品数量相加,生产日期以逗号隔开的方式存储,

例如:
goodsId:1 ;
goodsQty :500
prodate :2020-04-25,2022-04-25,2023-04-16

爱吃芒果的小陈的主页 爱吃芒果的小陈 | 初学一级 | 园豆:98
提问于:2022-03-25 18:32
< >
分享
所有回答(2)
0
goodList
.GroupBy(p=>p.GoodsId)
.Select(g=>new PubGoods(){
    goodsId=g.Key;
    goodsQty=g.Sum(p=>p.goodsQty); 
    prodate=g.Select(p=>p.prodate).Aggregate((x,y)=>$"{x},{y}")
})
czd890 | 园豆:14488 (专家六级) | 2022-03-25 21:56
ConcurrentDictionary<string,Dto> data;
for(var good in goodList){ 
data.AddOrUpdate(
    good.goodsId, 
    key=>new Dto(){goodsId=key, goodsQty=good.goodsQty, prodate=good.prodate},
    (key,dto)=> {dto.goodsQty+=good.goodsQty; dto.prodate+=","+good.prodate}
)
}
//还可以并发跑. 
goodList.AsParallel().ForAll(上面对字典的操作)

支持(0) 反对(0) czd890 | 园豆:14488 (专家六级) | 2022-03-25 22:05
0

另外建个表插入,数据就用上面汇总。

LiveCoding | 园豆:502 (小虾三级) | 2022-04-11 16:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册