我想使用 LINQ 实现的操作应该将两个数组的每个第 n 个元素配对。当第 n 个项目不存在时,将获取null
。请注意,数组可能有不同的长度。
例如,如果我有
-
a => {1, 2, 3, 4 }
-
b => {0, 2, 0 }
-
result => { {1,0}, {2,2}, {3,0}, {4, null} }
如果我有a
和b
倒置,我应该得到:
-
a => {0, 2, 0 }
-
b => {1, 2, 3, 4 }
-
result => { {0,1}, {2,2}, {0,3}, {null, 4} }
我想过Zip
和DefaultIfEmpty
的组合,但它只在一个方向上起作用:(
Enumerable.Range(0, Math.Max(a.Length, b.Length)).
Select(x => new Tuple<int,int>(
x<a.Length?a[x]:null,
x<b.Length?b[x]:null)
).ToArray();
或者,如果您不希望生成的数组的元素类型为 Tuple
:
Enumerable.Range(0, Math.Max(a.Length, b.Length)).
Select(x => new {
x<a.Length?a[x]:null,
x<b.Length?b[x]:null
}
).ToArray();