Zip 方法容許把序列中的元素經過交織將 IEnumerable 序列鏈接在一塊兒。
Zip 是一種基於 IEnumerable 的擴展方法。
例如,將具備年齡的名稱集合壓縮在一塊兒:javascript
var names = new[] { "John", "Sarah", "Amrit" }; var ages = new[] { 22, 58, 36 }; var namesAndAges = names.Zip(ages, (name, age) => name + " " + age);
將會生成包含三個元素的 IEnumerable <string>:php
若是一個序列比另外一個序列短,當到達較短序列的末尾時,「壓縮」將會中止。所以,若是添加了一個額外的名稱「Bob」:java
var names = new [] {"John", "Sarah", "Amrit", "Bob"};
結果會和以前同樣,「Bob」不會被使用,由於並無與之匹配的年齡。
Lambdas 也可用於建立對象;下面的示例演示如何建立一個攜帶兩個元素組成元組的 IEnumerable 對象。
兩個元素的元組的枚舉:spa
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> 對象,它包含三個元組,每一個元組都包含一個名稱和年齡。code
書名:《C# Tips》
章節:Merging IEnumerable Sequences with LINQ
網址:https://leanpub.com/cstipsorm