[英]IEnumerable<List<DataRow>> does not contain a definition for 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.