Skip to content

Instantly share code, notes, and snippets.

@paulpdaniels
Created August 18, 2014 20:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulpdaniels/d3a05cdb1db4852fc621 to your computer and use it in GitHub Desktop.
Save paulpdaniels/d3a05cdb1db4852fc621 to your computer and use it in GitHub Desktop.
Linq enumerate multiple collections simultaneously
public static class EnumerableExtensions
{
/// <summary>
/// Enumerates over two sequences simulateneously and performs the action on both
/// </summary>
/// <typeparam name="T1"></typeparam>
/// <typeparam name="T2"></typeparam>
/// <param name="source1"></param>
/// <param name="source2"></param>
/// <param name="eacher">The action which takes a value from each sequence</param>
public static void ZipEach<T1, T2>(this IEnumerable<T1> source1, IEnumerable<T2> source2, Action<T1, T2> action)
{
var source1Enumerator = source1.GetEnumerator();
var source2Enumerator = source2.GetEnumerator();
for (; AdvanceEach(source1Enumerator, source2Enumerator);)
{
eacher(source1Enumerator.Current, source2Enumerator.Current);
}
}
private static bool AdvanceEach(params System.Collections.IEnumerator [] enumerators)
{
return enumerators.All(e => e.MoveNext());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment