我目前正在试验一下LINQ。比方说,我有相同长度的两个集合:Interleaved与LINQ合并?
var first = new string[] { "1", "2", "3" };
var second = new string[] { "a", "b", "c" };
我想这两个集合合并成一个,而是以交错的方式。由此产生的顺序应该是:
"1", "a", "2", "b", "3", "c"
我想出迄今的Zip
组合,一个匿名类型和SelectMany
:
var result = first.Zip(second, (f, s) => new { F = f, S = s })
.SelectMany(fs => new string[] { fs.F, fs.S });
是否有人知道一个备用的/简单用LINQ实现这种交错合并的方法?
当然,在可重用性和可读性方面都是一个很好的解决方案。 – TeaWolf
我想如果第一个集合更大,这段代码仍然会返回它们,但是如果第二个集合比较大,它会跳过它们。也许值得继续通过while循环后的第二个集合一致性:-) –
@丹尼,是的。我的意愿是,一旦最短的时间内停止,那么你不必担心如何填补空白。(通常我不会把其他人的代码放在我的答案中,但是我将离开ChaosPandion的编辑,单独使用Jiri的代码。) – Douglas