Possible multiple enumeration of IEnumerable

这里想说的是什么呢?这和LINQ的特性有关,就是它不会立即执行返回结果,而是在代码执行到的时候才执行。

例如:如果你有一个数组,然后通过一个where条件得到一个可遍历对象,你在使用这个可遍历对象时就可能会出现问题。什么问题呢?我们来看一段简单的测试代码:

可以看两个循环后,”excuteTimes” 被执行了20次,也就是where条件被执行了20次,如果数组大,条件复杂,这必将导致性能低下。

那如果解决呢?很简单,.ToArray()或者.ToList().

https://www.jetbrains.com/help/resharper/2016.2/PossibleMultipleEnumeration.html