我有关于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>
?
答案 0 :(得分:5)
方法Tolist&lt;&gt;()是否浪费时间或计算机资源?
这取决于。如果您需要列表,那么这可能不是浪费。它确实使用时间和资源来构建列表。
在IEnumerable psec上进行一些迭代或循环以构建List&lt;&gt; ?
是。它遍历可枚举,并从其中的项构建列表。
一般情况下,如果您的目标只是枚举结果(即:在foreach
循环中使用),则无需通过List<T>
转换为ToList()
,这样做只是浪费。