0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3
|
|
4 using JetBrains.Annotations;
|
|
5
|
|
6 namespace BLToolkit.Linq
|
|
7 {
|
|
8 public static class Extensions
|
|
9 {
|
|
10 public static IEnumerable<TResult> Zip<TFirst,TSecond,TResult>(
|
|
11 [NotNull] this IEnumerable<TFirst> first,
|
|
12 [NotNull] IEnumerable<TSecond> second,
|
|
13 [NotNull] Func<TFirst,TSecond,TResult> resultSelector)
|
|
14 {
|
|
15 if (first == null) throw new ArgumentNullException("first");
|
|
16 if (second == null) throw new ArgumentNullException("second");
|
|
17 if (resultSelector == null) throw new ArgumentNullException("resultSelector");
|
|
18
|
|
19 using (var e1 = first.GetEnumerator())
|
|
20 using (var e2 = second.GetEnumerator())
|
|
21 while (e1.MoveNext() && e2.MoveNext())
|
|
22 yield return resultSelector(e1.Current, e2.Current);
|
|
23 }
|
|
24 }
|
|
25 }
|