我有一个项目列表,我想迭代它们的一个子集.现在,我想知道从列表中删除不需要的项目然后循环它之间是否存在性能影响差异; 或者只是过滤for循环中的列表.
这是一个例子.
RemoveAll方法:
list.RemoveAll(o => !someOtherList.Contains(o.Property));
foreach (var i in list)
{
}
Run Code Online (Sandbox Code Playgroud)
Where方法:
foreach (var i in list.Where(o => someOtherList.Contains(o.Property))
{
}
Run Code Online (Sandbox Code Playgroud)
我知道第一种方法实际上是要操纵列表中的内容,而第二种方法则不会.这并不关心我.我更关心的是第二种方法中的过滤器是否适用于每次迭代,或者C#是否足够智能以创建子集并且仅循环通过该子集(几乎与第一种方法一起使用临时变量).