How to do Python's zip in C#? How to do Python's zip in C#? python python

How to do Python's zip in C#?


How about this?

C# 4.0 LINQ'S NEW ZIP OPERATOR

public static IEnumerable<TResult> Zip<TFirst, TSecond, TResult>(        this IEnumerable<TFirst> first,        IEnumerable<TSecond> second,        Func<TFirst, TSecond, TResult> func);


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        );    }}