译使用 LINQ 合并 IEnumerable 序列
Posted liqingwen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了译使用 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>:
如果一个序列比另一个序列短,当到达较短序列的末尾时,“压缩”将会停止。因此,如果添加了一个额外的名称“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
以上是关于译使用 LINQ 合并 IEnumerable 序列的主要内容,如果未能解决你的问题,请参考以下文章
译《C# 小技巧 -- 编写更优雅的 C#》原书名《C# Tips -- Write Better C#》
如何使用 LINQ 修改 IEnumerable 以避免 foreach 循环? [复制]
使用 LINQ 更新 IEnumerable 对象的简单方法