如何对IEnumerable工作上的ToList()?

Jac*_*ack 8 .net c# ienumerable list

扩展方法如何ToList()工作?说我有IEnumerable10000件物品.将ToList()创建一个新的List并迭代IEnumerable10000个项目,然后返回我List或.NET以其他方式做它?

MSDN链接讨论了数据库查询的立即执行.我的问题只是转换IEnumerableList.

Jon*_*eet 22

它不一定会迭代,尽管这是"最坏情况"的情况.基本上它调用new List<T>(source),但它有一些技巧:如果源实现ICollection<T>,构造函数可以调用ICollection<T>.CopyTo()将完整的数据复制到数组中.与单步迭代相比,这可以更有效地实现.同样在这种ICollection<T>情况下,新列表知道要开始的最终大小,因此不需要继续扩展其内部缓冲区.

有关更多详细信息,请参阅我的Edulinq ToList()博客文章.