You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复SonarCloud S2971:简化IEnumerable类型LINQ语句

修复SonarCloud S2971规则问题:简化IEnumerable类型LINQ语句

问题根源

你当前代码里的.ToList()是冗余操作,触发了S2971规则:

MyCars refCar = m_service.Cars?.ToList().FirstOrDefault(x => x.Id == car.refId);

FirstOrDefault可以直接作用于IEnumerable<T>类型,不需要先把集合转成List<T>。.ToList()会强制遍历整个集合并在内存中创建完整列表,既浪费内存,又违背了LINQ延迟执行的特性——FirstOrDefault找到匹配项就会停止遍历,而.ToList()必须走完所有元素。

修复后的代码

直接移除.ToList()即可:

MyCars refCar = m_service.Cars?.FirstOrDefault(x => x.Id == car.refId);
...
return m_otherService.GetCar(refCar.RefCardId);

补充说明

  • 保留?.空安全运算符,确保m_service.Cars为null时不会抛出空引用异常
  • 修复后完全保留原业务逻辑:找到第一个Id匹配car.refId的MyCars实例,无匹配项则返回null

内容的提问来源于stack exchange,提问作者4est

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 01:37:01