使用扩展方法ToList <t>()会浪费资源吗?</t>

时间:2012-08-09 19:18:02

标签: c# generics tolist

我有关于LINQ,IEnumerable<>List<>的问题。

如果我有List<T>并希望过滤或搜索它,我会像这样使用LINQ:

var psec = from p in MyListOfSomeObjects
           where ((p.Tipo == tipo) || (p.Tipo == null))
           select p;

但在一个特定情况下,我需要一个实际的List<T>,而不是LINQ查询返回的IEnumerable<T>

我可以使用psec.ToList<T>()来获取List<T>,但我的问题是:

方法ToList<T>()是否浪费时间或计算机资源?它是否在IEnumerable<T>之间进行了一些迭代或循环以构建List<T>

1 个答案:

答案 0 :(得分:5)

  

方法Tolist&lt;&gt;()是否浪费时间或计算机资源?

这取决于。如果您需要列表,那么这可能不是浪费。它确实使用时间和资源来构建列表。

  

在IEnumerable psec上进行一些迭代或循环以构建List&lt;&gt; ?

是。它遍历可枚举,并从其中的项构建列表。

一般情况下,如果您的目标只是枚举结果(即:在foreach循环中使用),则无需通过List<T>转换为ToList(),这样做只是浪费。