gpt4 book ai didi

C#将两个不均匀的List交织成一个新的List

转载 作者:太空狗 更新时间:2023-10-30 00:31:35 25 4
gpt4 key购买 nike

我有两个不同长度的列表。我想要实现的是第三个列表,它包含 list1 中的第一个元素,然后是 list2 中的第一个元素,然后是 list1 中的第二个元素,以及 list2 中的第二个元素,依此类推,直到两个元素中的一个被用尽(它们'不均匀),然后只需添加该列表中的任何剩余项目。

result 的项目数应与 list1 和 list2 的总和相同。

我不能使用像 Union.ToList() 这样的东西,因为它不会将两者交织在一起,它只是将例如 list1 中的所有项目添加到 list2 的底部并将其作为结果输出。我尝试了 .Zip(Linq) 但是它似乎接受了两个元素并将它们合并为一个元素(即将两个字符串连接成一个更长的字符串)。

List<string> list1 = new List<string>(){
"4041",
"4040"
};

List<string> list2 = new List<string>(){
"4039",
"4044",
"4075",
"4010",
"4100",
"4070",
"4072"
};


// Ideal result:
result = { "4041",
"4039",
"4040"
"4044",
"4075",
"4010",
"4100",
"4070",
"4072"
};

最佳答案

int length = Math.Min(list1.Count, list2.Count);

// Combine the first 'length' elements from both lists into pairs
list1.Take(length)
.Zip(list2.Take(length), (a, b) => new int[] { a, b })
// Flatten out the pairs
.SelectMany(array => array)
// Concatenate the remaining elements in the lists)
.Concat(list1.Skip(length))
.Concat(list2.Skip(length));

关于C#将两个不均匀的List交织成一个新的List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24713558/

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