C#中如何将List<string>内的元素两两合并为单个元素
问题原因
你原来的写法是遍历集合中每一个元素,每次都将当前元素和自身拼接,自然会得到元素重复两次的结果,同时你没有按照「每两个元素为一组」的规则遍历,自然无法得到预期的两两拼接效果。
解决方法
方法1:使用步长为2的for循环遍历
这是最直观的写法,直接控制遍历索引,每次取当前索引和下一个索引的元素拼接即可:
List<string> data1 = new List<string>(); // 提前判断集合长度是否为偶数,避免索引越界 if (data.Count % 2 != 0) { // 可根据需求处理长度为奇数的场景,比如抛出异常、忽略最后一个元素,这里示例为补空字符串凑对 data.Add(string.Empty); } for (int i = 0; i < data.Count; i += 2) { data1.Add($"{data[i]} {data[i + 1]}"); }
方法2:使用LINQ分组拼接
如果更习惯LINQ写法,可以按索引整除2的结果分组,每组内元素拼接即可:
var data1 = data.Select((val, idx) => new { val, idx }) .GroupBy(x => x.idx / 2) .Select(g => string.Join(" ", g.Select(x => x.val))) .ToList();
输出结果
执行后遍历data1即可得到预期输出:
- A101 Plans
- A102 Elev/Sec
- A103 Unnamed
内容的提问来源于stack exchange,提问作者user16687043
相关产品推荐
相关产品推荐

