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

C# 如何使用for循环实现两个列表按条件匹配输出对应数据

现有代码的问题

  • 嵌套循环内部直接触发return,第一次匹配/不匹配都会直接终止整个方法,根本无法遍历完所有车辆和司机的配对
  • 结果集合定义在循环内部,每次匹配到都会新建集合,无法累积所有匹配的配对数据
  • 单个配对不匹配就直接返回NotFound,逻辑完全错误,应该是所有遍历完成后没有任何匹配结果才返回404

修正后代码

public IActionResult GetAllVehicleDrivers()
{
    var VehicleList = new List<Vehicle>()
    {
        new Vehicle() { VehNum = "KA04AS1234", VehId = 1 },
        new Vehicle() { VehNum = "KA04AS5689", VehId = 2 },
        new Vehicle() { VehNum = "KA04AS9874", VehId = 3 },
        new Vehicle() { VehNum = "KA04AS5647", VehId = 4 },
        new Vehicle() { VehNum = "KA04AS7452", VehId = 5 },
    };

    var DriverList = new List<Driver>()
    {
        new Driver() { DriverName = "Gajaraj", DriverId = 123,  VehId = 1 },
        new Driver() { DriverName = "Tajar", DriverId = 245,  VehId = 5 },
        new Driver() { DriverName = "Pajara", DriverId = 363,  VehId = 3 },
        new Driver() { DriverName = "Haja", DriverId = 425,  VehId = 2 },
        new Driver() { DriverName = "Kaj", DriverId = 547,  VehId = 4 },
        new Driver() { DriverName = "Dajarajines", DriverId = 547,  VehId = 1 },
    };

    // 循环外初始化结果集合,用来累积所有匹配项
    List<dynamic> VehDriverList = new List<dynamic>();

    foreach (var vehicle in VehicleList)
    {
        foreach (var driver in DriverList)
        {
            if (vehicle.VehId == driver.VehId)
            {
                // 匹配到就往结果集合加,不要中途return
                // 这里用匿名对象存储,返回的接口数据是键值对结构,更便于前端解析
                VehDriverList.Add(new 
                {
                    VehId = vehicle.VehId,
                    VehNum = vehicle.VehNum,
                    DriverId = driver.DriverId,
                    DriverName = driver.DriverName
                });
            }
        }
    }

    // 全部遍历完再判断结果
    if (VehDriverList.Count > 0)
    {
        return Ok(VehDriverList);
    }
    else
    {
        return NotFound();
    }
}

如果确实需要纯数组格式的返回结果,把Add里的匿名对象替换为new List<dynamic> {vehicle.VehId, vehicle.VehNum, driver.DriverId, driver.DriverName}即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:09:05