1. 程式人生 > >【譯】使用 LINQ 合併 IEnumerable 序列

【譯】使用 LINQ 合併 IEnumerable 序列

Zip 方法允許把序列中的元素通過交織將 IEnumerable 序列連線在一起。
Zip 是一種基於 IEnumerable 的擴充套件方法。
例如,將具有年齡的名稱集合壓縮在一起:

  var names = new[] { "John", "Sarah", "Amrit" }; var ages = new[] { 22, 58, 36 }; var namesAndAges = names.Zip(ages, (name, age) => name + " " + age); 

將會生成包含三個元素的 IEnumerable <string>:

image.png

如果一個序列比另一個序列短,當到達較短序列的末尾時,“壓縮”將會停止。因此,如果添加了一個額外的名稱“Bob”:

  var names = new [] {"John", "Sarah", "Amrit", "Bob"}; 

結果會和之前一樣,“Bob”不會被使用,因為並沒有與之匹配的年齡。
Lambdas 也可用於建立物件;下面的示例演示如何建立一個攜帶兩個元素組成元組的 IEnumerable 物件。
兩個元素的元組的列舉:

  var names = new[] { "John", "Sarah", "Amrit" }; var ages = new[] { 22, 58, 36 }; var namesAndAges = names.Zip(ages, (name, age) => Tuple.Create(name, age)); 

這將產生一個 IEnumerable<Tuple<String, Int32> 物件,它包含三個元組,每個元組都包含一個名稱和年齡。

《C# Tips》Merging IEnumerable Sequences with LINQ