IEnumerable<TResult> Zip<TResult,T1,T2>
(IEnumerable<T1> a,
IEnumerable<T2> b,
Func<T1,T2,TResult> combine)
{
using (var f = a.GetEnumerator())
using (var s = b.GetEnumerator())
{
while (f.MoveNext() && s.MoveNext())
yield return combine(f.Current, s.Current);
}
}
5条答案
按热度按时间ghhkc1vu1#
更新:它在C#4中内置为System.Linq.Enumerable.Zip Method
下面是一个C# 3版本:
放弃了C#2版本,因为它显示了它的年龄。
bqucvtff2#
据我所知没有。我为自己写了一个(以及其他一些有用的扩展,并将它们放在Codeplex上一个名为NExtension的项目中。
显然,.NET的并行扩展有一个Zip函数。
下面是NExtension的简化版本(但请查看它以了解更多有用的扩展方法):
用法:
p4rjhz4m3#
不,在. NET中没有这样的函数。你可以自己开发。注意,C#不支持元组,所以类似Python的语法糖也不见了。
您可以使用类似于以下内容的内容:
nhaq1z214#
F#里也有一个:
压缩文件= Seq.zip第一个枚举第二个枚举
iqih9akk5#