我目前正在尝试通过将多个嵌套数组注入到for循环中来构建一个数组。这目前无法正常工作,但我无法弄清楚自己在做什么。
这是我当前的代码:
// initialise an empty array
var x = new List<Model>();
// initialise an empty array to use in the loop
var mergedX = new List<Model>();
// Build up the array using the loop
foreach (var y in ys) {
if (y.nestedArray != null) {
mergedX = x.Concat(y.nestedArray).ToList();
}
}
// Return the built up array
return mergedX;
我在做什么错/有没有更好的方法来实现这一目标?
谢谢
答案 0 :(得分:3)
问题出在这一行:
mergedX = x.Concat(y.nestedArray).ToList();
您始终采用x
的值,但永远不要更改它。因此mergedX
将只包含最终数组的项目。
也许完整的LINQ会更好:
return ys
.Where(y => y.nestedArray != null) // only take items from ys if nestedArray != null
.SelectMany(y => y.nestedArray) // flatten the many arrays into one (in order)
.ToList(); // materialise the result into a list
或者,您可以使用List<T>
的{{3}}方法:
foreach (var y in ys)
{
if (y.nestedArray != null)
{
mergedX.AddRange(y.nestedArray);
}
}