C# 是否使用扩展方法ToList<;T>;()浪费资源?
我有一个关于LINQ、C# 是否使用扩展方法ToList<;T>;()浪费资源?,c#,generics,tolist,C#,Generics,Tolist,我有一个关于LINQ、IEnumerable和List的问题 当我有一个列表并想对其进行过滤或搜索时,我使用LINQ如下: var psec = from p in MyListOfSomeObjects where ((p.Tipo == tipo) || (p.Tipo == null)) select p; 但在一个特定情况下,我需要一个实际的列表,而不是LINQ查询返回的IEnumerable 我可以使用psec.ToList()获取我的列表
IEnumerable
和List
的问题
当我有一个列表
并想对其进行过滤或搜索时,我使用LINQ如下:
var psec = from p in MyListOfSomeObjects
where ((p.Tipo == tipo) || (p.Tipo == null))
select p;
但在一个特定情况下,我需要一个实际的列表
,而不是LINQ查询返回的IEnumerable
我可以使用psec.ToList()
获取我的列表
,但我的问题是:
方法ToList()
是否浪费时间或计算机资源?它是否在IEnumerable
中进行迭代或循环以构建列表
方法Tolist()是否浪费时间或计算机资源
视情况而定。如果你需要一份清单,那么它很可能不是一种浪费。它确实使用时间和资源来构建列表
在IEnumerable psec中进行迭代或循环以构建列表吗
对。它遍历可枚举项并根据其中的项构建列表
通常,如果您的目标只是枚举结果(即:在
foreach
循环中使用),则无需通过ToList()
转换为列表,这样做只是浪费。如果您将其用作单个LINQ语句,你知道托尔列表是否被选择到了某种程度吗?@jamesno-不管它是否在一个“声明”中完成。编译器以同样的方式处理它,它只是一个方法调用ToList()
just(有效地)返回newList(sourceEnumerable)
@James它实际上与您所做的完全相同:List newList=newList(psec)代码>