如何连接两个不同长度的列表。它应该与序列结合在一起。
例如。
{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
数组或列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)