我正在尝试Concat两个数组的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
?
答案 0 :(得分:3)
看起来这段代码:
IEnumerable<ObjectToConcat> result = new ArraySegment<ObjectToConcat>();
是尝试使空可枚举。您可以通过以下方式更有效,更清晰地完成此任务:
IEnumerable<ObjectToConcat> result = Enumerable.Empty<ObjectToConcat>();
那就是说,如果有很多子列表,链接很多Concat
次呼叫可能不是最有效的,性能明智的。如果你创建一个List<IEnumerable<ObjecToConcat>> allLists
,将所有子列表添加到该列表,那么它可能会更好一点,然后最后你可以写:
result = allLists.SelectMany(x => x);
将其展平为一个项目列表。
答案 1 :(得分:1)
您可以在下方添加ObjectToConcat
列表,并使用addrange方法
List<ObjectToConcat> result = new List<ObjectToConcat>();
result.AddRange(listA);
答案 2 :(得分:0)
试试这个:
IEnumerable<ObjectToConcat> result =
new ArraySegment<ObjectToConcat>(new ObjectToConcat[0]).Array;