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

如何在C#中关联两个CSV文件并实现车主车辆报表输出?

解决车主与车辆关联的问题

嘿,作为C#新手能上手报表项目已经超棒啦!你现在的核心需求就是把车主和他们名下的车辆对应起来,我来帮你调整代码,让它实现你想要的效果~

首先,咱们可以先把车辆列表按ownerID分组,这样后续找每个车主的车辆时不用反复遍历所有车辆,效率更高也更清晰。用LINQ的GroupBy就能轻松做到这一点:

// 先将车辆按ownerID分组,转换成字典方便快速查找
var vehiclesByOwner = cars2.GroupBy(v => v.oID)
                          .ToDictionary(group => group.Key, group => group.ToList());

接下来,遍历车主列表的时候,直接从分组好的字典里取出对应车主的车辆就行,还能顺便统计数量:

foreach (Owner o in own2)
{
    // 输出车主基础信息
    Console.WriteLine($"{o.oID}\t{o.oFirst}\t{o.oLast}");

    // 尝试获取当前车主的所有车辆
    if (vehiclesByOwner.TryGetValue(o.oID, out var userVehicles))
    {
        // 遍历并输出每辆车的信息
        foreach (Vehicle v in userVehicles)
        {
            // 注意这里的拼写:mileage(你原来写的milage是拼写错误哦)
            Console.WriteLine($"\t{v.year}\t{v.make}\t{v.model}\t{v.mileage}");
        }
        // 输出车辆数量统计行
        Console.WriteLine($"Owner Id..... {userVehicles.Count} cars");
    }
    else
    {
        // 如果车主没有车辆,显示0辆
        Console.WriteLine("Owner Id..... 0 cars");
    }

    // 加个空行分隔不同车主,报表看起来更整洁
    Console.WriteLine();
}

小说明:

  • 用GroupBy+ToDictionary的方式,把车辆按车主ID归类,后续查找时间复杂度是O(1),比你原来每次遍历所有车辆的O(n)高效很多,数据量大的时候差别会很明显。
  • TryGetValue是为了避免车主没有车辆时抛出找不到键的异常,代码更健壮。
  • 我帮你修正了拼写错误:milage应该是mileage,记得保持类的属性名和这里一致哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:15