0

我正在尝试连接两个数组 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

4

3 回答 3

3

看起来这段代码:

IEnumerable<ObjectToConcat> result = new ArraySegment<ObjectToConcat>();

是一种使空可枚举的尝试。您可以通过以下方式更有效、更清楚地做到这一点:

IEnumerable<ObjectToConcat> result = Enumerable.Empty<ObjectToConcat>();

也就是说Concat,如果有很多子列表,链接大量调用可能不是最有效的、性能方面的。List<IEnumerable<ObjecToConcat>> allLists如果您创建一个,将所有子列表添加到该列表中,它可能会执行得更好一些,然后最后您可以编写:

result = allLists.SelectMany(x => x);

将其展平为仅项目列表。

于 2013-10-07T14:34:20.973 回答
1

您可以拥有ObjectToConcat如下列表并使用 addrange 方法向其中添加项目

List<ObjectToConcat> result = new List<ObjectToConcat>();

result.AddRange(listA);
于 2013-10-07T14:44:45.237 回答
0

尝试这个:

IEnumerable<ObjectToConcat> result = 
       new ArraySegment<ObjectToConcat>(new ObjectToConcat[0]).Array;
于 2013-10-07T14:30:00.287 回答