Concat 不起作用 - 基础数组为空
本文关键字:数组 不起作用 Concat | 更新日期: 2023-09-27 18:34:10
我正在尝试连接两个数组 IEnumerable 列表,并在结果视图中显示The underlying array is null
.
IEnumerable<ObjectToConcat> result = new ArraySegment<ObjectToConcat>();
var listA = new List<ObjectToConcat>();
var a = new ObjectToConcat
{OfficialId = Guid.NewGuid(), FirstName = "A Object"};
listA.Add(a);
var b = new ObjectToConcat
{OfficialId = Guid.NewGuid(), FirstName = "B Object"};
listA.Add(b);
// Error here is result view
result = result.Concat(listA);
var c = new ObjectToConcat
{OfficialId = Guid.NewGuid(), FirstName = "C Object"};
listB.Add(c);
// Error here is result view
result = result.Concat(listB);
任何人都可以建议我我的代码有什么问题。或者Concat
不适用于List
?
看起来这段代码:
IEnumerable<ObjectToConcat> result = new ArraySegment<ObjectToConcat>();
是使空枚举的尝试。 您可以通过编写以下内容来更有效、更清楚地做到这一点:
IEnumerable<ObjectToConcat> result = Enumerable.Empty<ObjectToConcat>();
也就是说,如果有很多子列表,则链接大量Concat
调用可能不是最有效的,性能方面。 如果您创建一个List<IEnumerable<ObjecToConcat>> allLists
,将所有子列表添加到该列表中,然后在最后您可以编写:
result = allLists.SelectMany(x => x);
将其扁平化为仅项目列表。
您可以拥有如下所示的ObjectToConcat
列表,并使用addrange方法向其添加项目
List<ObjectToConcat> result = new List<ObjectToConcat>();
result.AddRange(listA);
试试这个:
IEnumerable<ObjectToConcat> result =
new ArraySegment<ObjectToConcat>(new ObjectToConcat[0]).Array;