繁体   English   中英

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

[英]How does ToList() on an IEnumerable work?

扩展方法ToList()工作? 说我有一个IEnumerable 10000项。 ToList()创建一个新的List并遍历IEnumerable的10000个项目,然后返回一个List或者.NET以其他方式执行吗?

MSDN链接讨论了数据库查询的立即执行。 我的问题只是将IEnumerable转换为List

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

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

.ToList扩展方法调用List<T>构造函数,将IEnumerable<T>传递给它。 此构造将迭代IEnumerable<T>并复制的elemtns IEnumerable<T>在它们返回的顺序相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM