我有一个字符串列表
List<string> myList = new List<string>();
myList.Add(string1_1);
myList.Add(string1_2);
myList.Add(string2_1);
myList.Add(string2_2);
myList.Add(string3_1);
myList.Add(string3_2);
现在,经过一些魔术,我想要结合List的元素,使它们像这样
myList[0] = string1_1 + string1_2
myList[1] = string2_1 + string2_2
myList[2] = string3_1 + string3_2
因此也将List的大小减半。怎么能实现这一目标?
答案 0 :(得分:6)
一个简单的for循环可以工作:
List<string> inputList = new List<string>();
List<string> outputList = new List<string>();
for (int i = 0; i < inputList.Count; i += 2) // assumes an even number of elements
{
if (i == inputList.Count - 1)
outputList.Add(inputList[i]); // add single value
// OR use the continue or break keyword to do nothing if you want to ignore the uneven value.
else
outputList.Add(inputList[i] + inputList[i+1]); // add two values as a concatenated string
}
For循环适用于循环和一次处理元素对或三元组。
答案 1 :(得分:6)
我肯定会使用Trevor提供的for
循环方法,但是如果您想使用LINQ,可以使用GroupBy
和string.Join
:
myList = myList.Select((x, i) => new { x, i })
.GroupBy(x => x.i / 2)
.Select(g => string.Join("", g.Select(x => x.x)))
.ToList();
答案 2 :(得分:1)
您可以尝试这样的事情:
var half = myList
.Select((s,idx) => s + (idx < myList.Count() - 1 ? myList[idx +1] : string.Empty) )
.Where((s,idx) => idx % 2 == 0)
.ToList();
您可以对表格字符串[i] +字符串[i + 1]中的所有项目进行投影(小心检查字符串[i + 1]元素是否存在):
.Select((s,idx) => s + (idx < myList.Count() - 1 ? myList[idx +1] : string.Empty) )
然后只过滤偶数元素:
.Where((s,idx) => idx % 2 == 0)