2

我有一个关于 LINQ IEnumerable<>、 和List<>.

当我有一个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>

4

1 回答 1

5

Tolist<>() 方法是否浪费时间或计算机资源?

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

是否在 IEnumerable psec 上进行一些迭代或循环以构建 List<> ?

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

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

于 2012-08-09T19:19:21.863 回答