Is there a way utilize Enumerable.Zip, where all elements in both IEnumerables are used? If the IEnumerables have different counts, default remaining merges to default(T).
Examples
var first = new int[] { 1, 2, 3, 4, 5 };
var second = new string[] { "a", "b", "c" };
var zipped = first.Zip(second, (f, s) => new { f, s });
// actual: [ {1, "a"}, {2, "b"}, {3, "c"} ]
// expecting: [ {1, "a"}, {2, "b"}, {3, "c"}, {4, null}, {5, null} ]
var first = new int[] { 1, 2, 3 };
var second = new string[] { "a", "b", "c", "d", "e" };
var zipped = first.Zip(second, (f, s) => new { f, s });
// actual: [ {1, "a"}, {2, "b"}, {3, "c"} ]
// expecting: [ {1, "a"}, {2, "b"}, {3, "c"}, {0, "d"}, {0, "e"} ]