2
我有一個關於LINQ,IEnumerable<>
和List<>
的問題。是否使用擴展方法ToList <T>()浪費資源?
當我有一個List<T>
和要過濾或搜索它,我使用LINQ這樣的:
var psec = from p in MyListOfSomeObjects
where ((p.Tipo == tipo) || (p.Tipo == null))
select p;
但在一個特定的情況下,我需要一個實際的List<T>
,而不是IEnumerable<T>
被返回的LINQ查詢。
我可以使用psec.ToList<T>()
讓我List<T>
,但我的問題是:
請問方法ToList<T>()
浪費時間和計算機資源?它是否通過IEnumerable<T>
做了一些迭代或循環來構建List<T>
?
如果您將它作爲單個LINQ語句使用,您知道ToList是否被優化到任何程度? – James 2012-08-09 19:20:55
@詹姆斯不 - 它是否在一個「陳述」中完成並不重要。編譯器以相同的方式對待它,它只是一個方法調用。 'ToList()'只是(有效地)返回'新列表(sourceEnumerable)' –
2012-08-09 19:25:54
@James它真的和你要做的一模一樣:'List newList = new List (psec);' –
2012-08-09 19:26:54