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

Concat 不起作用 - 基础数组为空

看起来这段代码:

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;