簡體   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