我有以下字符串列表
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个列表。
答案 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
使用IEnumerator
和MoveNext()
方法,您可以循环遍历数组并按照您喜欢的方式组合它们
答案 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;
}