How to modify version 2 to produce the same result as version 1,because in version 2 i am getting cretesian product.
int[] a = { 1, 2, 3 };
string[] str = { "one", "two", "three" };
Version 1
var q =
a.Select((item, index) =>
new { itemA = item, itemB = str[index] }).ToArray();
version 2
var query = from itemA in a
from index in Enumerable.Range(0,a.Length)
select new { A = itemA, B = str[index] };