我有下面的代码,该代码从子函数中检索列表并将其返回给主函数。我的问题是我无法将子功能的结果连接到mainfunc中声明的可枚举。我有什么想念的吗?
private void MainFunc()
{
IEnumerable<CustomClass> keys = Enumerable.Empty<CustomClass>();
foreach (var item in items)
{
keys.Concat(SubFunc(item));
}
}
private IEnumerable<CustomClass> SubFunc (string y)
{
IEnumerable<CustomClass> list = GetList(y).ToList();
return list;
}
Run Code Online (Sandbox Code Playgroud) 应用程序意外崩溃,堆栈溢出错误.经过研究,我发现崩溃的原因是遵循以下代码:
foreach (var item in items)
{
result = result.Concat(item.Data);
}
Run Code Online (Sandbox Code Playgroud)
这是多个IEnumerables的连接.应用程序在items包含10,000个元素时崩溃.
SelectMany解决了这个问题.但还是......
为什么Concat扩展导致堆栈溢出?