我目前正在試驗一下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