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

如何优化C#/ASP.NET/EF Core中的多层foreach循环代码

代码优化方案

可以用LINQ的SelectMany结合Lambda表达式扁平化嵌套循环,大幅简化代码逻辑,同时完全保留原代码的业务规则:

var dataList = dataArray.SelectMany(data => 
{
    // 无车辆的情况,返回基础模型
    if (!data.Cars.Any())
    {
        return new[] 
        {
            new MyModel 
            {
                Name = data.Name,
                LastName = data.LastName,
                Model = "",
                SubModel = ""
            }
        };
    }

    // 有车辆的情况,扁平化车辆和子模型
    return data.Cars.SelectMany(car => 
    {
        // 车辆无子模型的情况
        if (!car.SubModels.Any())
        {
            return new[] 
            {
                new MyModel 
                {
                    Name = data.Name,
                    LastName = data.LastName,
                    Model = car.Model,
                    SubModel = ""
                }
            };
        }

        // 车辆有子模型的情况,每个子模型对应一个MyModel实例
        return car.SubModels.Select(subModel => new MyModel 
        {
            Name = data.Name,
            LastName = data.LastName,
            Model = car.Model,
            SubModel = subModel.Model
        });
    });
}).ToList();

优化说明

  • 用SelectMany替代多层嵌套foreach,自动完成集合扁平化和元素收集,无需手动维护dataList
  • 采用对象初始化器简化MyModel实例创建,避免重复的属性赋值操作
  • 每个分支直接返回对应场景的模型集合,逻辑分层清晰,可读性更强
  • 完全复刻原代码的业务规则:无车辆时添加空模型;有车辆但无子模型时添加对应车辆模型;有子模型时每个子模型生成独立实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:50:22