错误的Resharper多次枚举警告?

CSJ*_*CSJ 8 resharper ienumerable

这段代码:

IEnumerable<IEnumerable<int>> numbas = new[] {new[] {0, 1}, new[] {2}, new[] {3, 4, 5}};
var flattened = numbas.SelectMany(a => a);
Run Code Online (Sandbox Code Playgroud)

从多个来源中提取单个扁平的可枚举数字列表.Resharper警告说,有可能a(第二个)被多次枚举 - 但这很愚蠢; 每个源只被枚举一次.是的,符号a将被多次枚举,但每次都会有不同的来源.

我错过了什么,或者这是来自Resharper的错误警告?

cit*_*att 12

是的,这是一个错误的警告.你可以看看你是否看一下实现SelectMany- 只有一个嵌套元素的枚举:

foreach (TSource element in source) {
    foreach (TResult subElement in selector(element)) {
        yield return subElement;
    }
}
Run Code Online (Sandbox Code Playgroud)

这里的YouTrack问题本:http://youtrack.jetbrains.com/issue/RSRP-413613