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

解决方案 »

  1.   

    zip 然后group
      

  2.   

     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));
      

  3.   

                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
    主板:华硕主板