将多个列表垂直组合到单个字符串列表中

时间:2017-04-18 08:14:36

标签: c#

我有以下字符串列表

List<string> List1 = new List<string> { "P1", "P2", "P3" };
List<string> List2 = new List<string> { "Q1", "Q2", "Q3" };
List<string> List3 = new List<string> { "R1", "R2", "R3" };

//........
// Add List1,List2, List3 values Vertically  to CombileList

CombineList = { "P1", "Q1", "R1", "P2", "Q2", "R2", "P3", "Q3", "R3" };

我希望垂直向所有列表中的CombineList添加值,如CombineList所示,可以有相同方式添加到CombineList的n个列表。

3 个答案:

答案 0 :(得分:0)

如果列表大小相同,则可以使用for循环:

List<string> list1 = new List<string> { "P1", "P2", "P3" };
List<string> list2 = new List<string> { "Q1", "Q2", "Q3" };
List<string> list3 = new List<string> { "R1", "R2", "R3" };

List<string> combinedList = new List<string>();

for(int i = 0; i < list1.Count; i++)
{
    combinedList.Add(list1[i]);
    combinedList.Add(list2[i]);
    combinedList.Add(list3[i]);
}

答案 1 :(得分:0)

类似问题Here

使用IEnumeratorMoveNext()方法,您可以循环遍历数组并按照您喜欢的方式组合它们

答案 2 :(得分:0)

使用枚举器:

public List<T> CombineVertically<T>(List<List<T>> Source)
        {
            List<T> result = new List<T>();

            var enumerators = Source.Select(x => x.GetEnumerator());
            while (enumerators.Where(x => x.MoveNext()).Count() > 0)            
                result.AddRange(enumerators.Select(x => x.Current));

            enumerators.ToList()
                .ForEach(x => x.Dispose());

            return result;
        }