gpt4 book ai didi

c# - 如何将多个列表与自定义序列组合

转载 作者:太空狗 更新时间:2023-10-29 23:08:47 26 4
gpt4 key购买 nike

不确定是否有算法来描述这个问题,但是否有任何优雅的方法可以将列表组合成自定义序列。例如:

List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> list3 = new List<string>();

list1.Add("a");
list1.Add("b");
list1.Add("c");

list2.Add("d");
list2.Add("e");
list2.Add("f");

list3.Add("g");
list3.Add("h");
list3.Add("i");

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

我希望组合的内容包含如下序列:

a //First record in list1
d //First record in list2
g //First record in list3
b //Second record in list1
e //Second record in list2
h //Second record in list3
c //Third record in list1
f //Third record in list2
i //Third record in list3

每个列表中的记录数可能不相等。

编辑

当每个列表中的记录数可能不相等时,我的意思是:

List<string> list1 = new List<string>();
List<string> list2 = new List<string>();
List<string> list3 = new List<string>();

list1.Add("a");

list2.Add("b");
list2.Add("c");

list3.Add("d");
list3.Add("e");
list3.Add("f");

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

预期结果:

a //First record in list1
b //First record in list2
d //First record in list3
c //Second record in list2
e //Second record in list3
f //Third record in list3

最佳答案

不知道有没有名字。合并?拼接?但是代码很简单。

var lists = new [] { list1, list2, list3 };
var combined = new List<string>(lists.Sum(l => l.Count));

for (var i = 0; i < lists.Max(l => l.Count); i++)
{
foreach (var list in lists)
{
if (i < list.Count)
combined.Add (list[i])
}
}

关于c# - 如何将多个列表与自定义序列组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15405701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com