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

如何将这段C#代码中的foreach循环改写为LINQ实现?

改写为LINQ实现

当然可以用LINQ改写这段代码,还能优化原逻辑的效率——原代码先做一次全集合检查(Any),再遍历全集合修改匹配项,相当于两次遍历。用LINQ过滤出需要修改的项后直接处理,只需一次遍历:

方案1:结合LINQ过滤与List.ForEach

如果ObjectSearchFilterDetails是List<T>类型,可以用以下方式:

frameAndExportRequest.SearchObjectRequest.ObjectSearchFilterDetails
    .Where(field => field.FieldName == "APPROVED_BY_USER_NAME")
    .ToList()
    .ForEach(field => field.FieldName = "APPROVED_BY_USER");
  • Where:过滤出所有需要修改的字段,只处理匹配项
  • ToList():将LINQ查询结果转为List,因为IEnumerable<T>没有ForEach方法
  • ForEach:对每个匹配字段执行修改操作

方案2:用LINQ过滤后简化foreach

如果你更倾向于保留foreach语句但去掉冗余检查,也可以直接遍历LINQ过滤后的结果:

foreach (var field in frameAndExportRequest.SearchObjectRequest.ObjectSearchFilterDetails
    .Where(field => field.FieldName == "APPROVED_BY_USER_NAME"))
{
    field.FieldName = "APPROVED_BY_USER";
}

这种方式去掉了原代码中的Any判断和内部的if条件,逻辑更简洁,且只遍历需要修改的项。

注意:LINQ本身的设计初衷是查询而非执行副作用(比如修改对象属性),但上述两种方式都是实践中常用的简化写法,既利用了LINQ的过滤能力,又完成了修改需求。

内容的提问来源于stack exchange,提问作者Nirmal Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:42:37