Linq 需要很长时间才能得到结果

问题描述 投票:0回答:1

我试图让下面的代码尽快运行。大约需要几分钟才能将结果添加到最终输出。

此代码是获取车辆信息的 API 端点的一部分,foreach 循环遍历每辆车以计算 PlateVehicle 表和另一个保单表中的车牌数量,以获取保险使用情况。

        foreach(var vehicle in result)
           {
                //Get total Plates Count
                var plates = await _context.PlateVehicles
                             .Where(a => a.VehicleId.Equals(vehicle.VehicleId)
                                    && a.Status=="Active").ToListAsync();
                vehicle.PlatesCount = plates.Count();
    
                //Get Insurance Use from Policy
                var policyInfo = await _context.Policies
                               .Where(a=>a.Vehicle_Id.Equals(vehicle.VehicleId)).FirstOrDefaultAsync();

                if (policyInfo != null)
                    {
                      vehicle.InsuranceUse = policyInfo.Class == null ? string.Empty : policyInfo.Class;
                      finalOutput.Add(vehicle);
                    }
             }
              
        

数据库中有大约6000条车辆记录,目前大约需要2分钟才能得到结果。任何建议都非常感激。谢谢。

c# .net performance linq core
1个回答
0
投票

您正在循环车辆并在每个循环中调用 _context (数据库)。因此,如果有 6000 条记录,那么本质上您将调用数据库 6000 次。这就是为什么需要这么长时间才能通过。我建议创建一个存储过程或视图来获取必要的数据并调用一次。

© www.soinside.com 2019 - 2024. All rights reserved.