c# 根据一个相同值 修改某一行值 保证位置和数据不变合并2个LIST数组

超级汉堡 2018-07-06 05:18:03

List<List<String>> list = new List<List<string>>() {
new List<string>() { "硬盘", "显卡", "硬盘", "处理器","显卡" ,"主板"
},
new List<string>() {
"1T", "GTX 960", "2T","酷睿I7" ,"GTX980","华硕主板"}
};


不如以上2个数组 当中 出现了 2个硬盘 但是他们的值分别为 1T 和 2T
我想实现的 是 不如 在第一个数组中 重复的 值相加 最终 就是 硬盘:1T+2T 这样的一个字符串 当然其他的 也是如此 比如 显卡 最终需要实现的效果就是 显卡: GTX960+GTX980
...全文
144 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
巴士上的邂逅 2018-07-06
  • 打赏
  • 举报
回复
            List<List<String>> list = new List<List<string>>() {
new List<string>() { "硬盘", "显卡", "硬盘", "处理器","显卡" ,"主板"},
new List<string>() { "1T", "GTX 960", "2T","酷睿I7" ,"GTX980","华硕主板"} };
var sss = list[0].Select((s, i) => new { s, i }).GroupBy(a => a.s).Select(s => s.Key + ":" + string.Join("+", s.Select(a => list[1][a.i]))).ToList();
Console.WriteLine(string.Join(Environment.NewLine, sss));

硬盘:1T+2T
显卡:GTX 960+GTX980
处理器:酷睿I7
主板:华硕主板
wanghui0380 2018-07-06
  • 打赏
  • 举报
回复
 var bb = list[0].Zip(list[1], (key, value) => new {key1 = key, value = value}).GroupBy(p => p.key1).Select(p=>$"{p.Key}:{string.Join("+",p.Select(c=>c.value))}");

Console.WriteLine(string.Join(Environment.NewLine,bb));
wanghui0380 2018-07-06
  • 打赏
  • 举报
回复
zip 然后group

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧