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