gpt4 book ai didi

c# - 在 LINQ 中连接 2 个具有不同长度的列表

转载 作者:行者123 更新时间:2023-12-02 03:46:21 29 4
gpt4 key购买 nike

如何连接两个不同长度的列表。它应该与序列结合在一起。例如。

{1,2,3,4} with {5,6,7}

我需要得到如下结果。

{{1,5}, {2,6}, {3,7}, {4,null}}

我尝试过这个。

var qry = a.Select((i, index) => new {i, j = b[index]}); 

但是它会抛出错误,因为列表的长度不同。请帮助我找到解决方案。

最佳答案

这应该有效:

var a = new int?[] { 1, 2, 3, 4 };
var b = new int?[] { 5, 6, 7 };

var result = Enumerable.Range(0, Math.Max(a.Count(), b.Count()))
.Select(n => new[] {a.ElementAtOrDefault(n), b.ElementAtOrDefault(n)});

请注意数组声明中的?。为了在结果列表中包含空值,这是必要的。省略 ? 会导致结果为 0,而不是 null

如果您不能或不想将数组声明为 int?,那么您必须在 Select 中进行强制转换,如下所示:

var result = Enumerable.Range(0, Math.Max(a.Count(), b.Count()))
.Select(n => new[] { a.Select(i => (int?)i).ElementAtOrDefault(n), b.Select(i => (int?)i).ElementAtOrDefault(n) });

第二段代码可以与常规 int 数组或列表一起正常工作。

关于c# - 在 LINQ 中连接 2 个具有不同长度的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607179/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com