LINQ 投影,当第 n 个项不存在时,将项配对并填充为 null



我想使用 LINQ 实现的操作应该将两个数组的每个第 n 个元素配对。当第 n 个项目不存在时,将获取null。请注意,数组可能有不同的长度。

例如,如果我有

  • a => {1, 2, 3, 4 }
  • b => {0, 2, 0 }

  • result => { {1,0}, {2,2}, {3,0}, {4, null} }

如果我有ab倒置,我应该得到:

  • a => {0, 2, 0 }

  • b => {1, 2, 3, 4 }

  • result => { {0,1}, {2,2}, {0,3}, {null, 4} }

我想过ZipDefaultIfEmpty的组合,但它只在一个方向上起作用:(

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();

最新更新