public void SelectFromEach ()
{
#region SelectFromEach2
List<int> a = new List<int> {1, 2, 3, 4};
List<char> b = new List<char> {'a', 'b', 'c', 'd', 'e'};
var c = a.SelectFromEach (b, (x, y) => new { First = x, Second = y }).ToList ();
Assert.AreEqual (4, c.Count);
Assert.AreEqual (1, c [0].First);
Assert.AreEqual ('a', c [0].Second);
Assert.AreEqual (2, c [1].First);
Assert.AreEqual ('b', c [1].Second);
Assert.AreEqual (3, c [2].First);
Assert.AreEqual ('c', c [2].Second);
Assert.AreEqual (4, c [3].First);
Assert.AreEqual ('d', c [3].Second);
#endregion
#region SelectFromEach3
Assert.AreEqual ("123",
new[]{1}.SelectFromEach (new[]{2}, new[]{3},
(x,y,z) => x.ToString () + y.ToString () + z.ToString ()).Implode ());
#endregion
#region SelectFromEach4
Assert.AreEqual ("1234",
new[]{1}.SelectFromEach (new[]{2}, new[]{3}, new[]{4},
(w,x,y,z) => w.ToString () + x.ToString () + y.ToString () + z.ToString ()).Implode ());
#endregion
}