How to do Python's zip in C#?
Solution 2: Similar to C# 4.0 Zip, but you can use it in C# 3.0
public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>( this IEnumerable<TFirst> first, IEnumerable<TSecond> second, Func<TFirst, TSecond, TResult> func) { using(var enumeratorA = first.GetEnumerator()) using(var enumeratorB = second.GetEnumerator()) { while (enumeratorA.MoveNext()) { enumeratorB.MoveNext(); yield return func(enumeratorA.Current, enumeratorB.Current); } } }
Solution 1:
IEnumerable<KeyValuePair<T1, T2>> Zip<T1, T2>( IEnumerable<T1> a, IEnumerable<T2> b){ var enumeratorA = a.GetEnumerator(); var enumeratorB = b.GetEnumerator(); while (enumeratorA.MoveNext()) { enumeratorB.MoveNext(); yield return new KeyValuePair<T1, T2> ( enumeratorA.Current, enumeratorB.Current ); }}