代码检查: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日