在List <string> C#.NET </string>中组合和追加元素

时间:2013-10-03 14:05:22

标签: c# .net string list

我有一个字符串列表

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的大小减半。怎么能实现这一目标?

3 个答案:

答案 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,可以使用GroupBystring.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)