【譯】使用 LINQ 合併 IEnumerable 序列

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

image.png

若是一個序列比另外一個序列短,當到達較短序列的末尾時,「壓縮」將會中止。所以,若是添加了一個額外的名稱「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

相關文章
相關標籤/搜索