ReSharper 2026.1 Help

代码检查:Foreach 循环的一部分可以转换为 LINQ 表达式,但将会使用另一个 'GetEnumerator' 方法。

此检查报告了一个 foreach 循环,其循环体只能部分转换为 LINQ 风格的序列操作,且这样做将使用不同于原始循环的 GetEnumerator 方法。 此警告比完全循环到查询的转换警告更为保守,因为循环只能部分重写。

示例

foreach (var item in source) { if (item.IsVisible) yield return item; Log(item); }
foreach (var item in source.Where(item => item.IsVisible)) { yield return item; Log(item); }

快速修复

将循环体中可转换的部分转为查询操作,保留其余部分为显式循环。

2026年 5月 8日