Zip 方法允許把序列中的元素通過交織將 IEnumerable 序列連接在一起。Zip 是一種基於 IEnumerable 的擴展方法。例如,將具有年齡的名稱集合壓縮在一起: 將會生成包含三個元素的 IEnumerable <string>: image.png image.png 如果一個序列比 ...
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
網址:https://leanpub.com/cstips