I have a rough idea with combining all these 1d array into 2d array and it becomes one array. So you can loop them in Linq to frame as different array. I’ll try once.
(From a In {arr1,arr2,arr3}
Select ta = a.Select(Function (x,i) Tuple.Create(i,x))
From t In ta
Group t By t.Item1 Into grp=Group
Let ga = grp.Select(Function (g) g.Item2).toArray
Select grs = ga).toList
done with the help of position tuples created by an indexed select
for doing the above the grouping will not serve, as with different length arrays, shorter ones need to be filled up on common length
(From i In Enumerable.Range(0,{arr1,arr2,arr3}.Max(Function (a) a.Length))
Let ra = {arr1,arr2,arr3}.Select(Function (x) If(x.Length <= i,"",x(i))).toArray
Select r=ra).toList
Feel free to combine {arr1,arr2,arr3} into a variable and will use later this within the LINQ