C# 复制记录并在网格中显示时出现性能问题?

C# 复制记录并在网格中显示时出现性能问题?,c#,asp.net,.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 3,我从两个表中获取记录,一个是VehicleDetails,另一个是Barcodedetails 车辆详细信息包含10000条记录,条形码详细信息包含110万条记录,每辆车映射到一个特定的条形码 目前我正在做的是首先从BarcodeDetailsTable获取所有的BarcodeDetails,完成它需要8秒 List<VTSBarCodeDetail> barCodeDetailMaster = barCodeDetailRepository.Get(null, null) as L

我从两个表中获取记录,一个是VehicleDetails,另一个是Barcodedetails

车辆详细信息包含10000条记录,条形码详细信息包含110万条记录,每辆车映射到一个特定的条形码

目前我正在做的是首先从BarcodeDetailsTable获取所有的BarcodeDetails,完成它需要8秒

List<VTSBarCodeDetail> barCodeDetailMaster = barCodeDetailRepository.Get(null, null) as List<VTSBarCodeDetail>;

barCodeDetails=barCodeDetailMaster.Where(x=>x.VehicleId==Convert.ToInt32(item.VehicleId)和&x.BarCodeId==item.BarCodeId).FirstOrDefault()

请更改如下


barCodeDetails=barCodeDetailMaster.FirestOrDefault(x=>x.VehicleId==Convert.ToInt32(item.VehicleId)&&x.BarCodeId==item.BarCodeId)

首先,你为什么要这么做?多了解一些情况会有帮助。如果您真的想为每个VehicleDetail条目输入条形码详细信息,那么是的,嵌套循环需要时间,我是说需要很长时间

行://some Logic将项添加到此列表

建议您处理每个条目

假设您真的想这样做并处理10000 x 110万条条目,以下是一些建议:

  • 拆分车辆详细信息以合理的数量(如10或50)批量获取,并从车辆详细信息加载相应的记录
  • 使用线程来处理记录(注意过度使用线程会扼杀这些好处)
如果输出不应该是有序的,您可能可以使用线程来处理和合并列表中的数据,但这一切都取决于您想要做什么


希望这有帮助,如果您需要更多帮助,请提供更多详细信息

不要从包含110万条记录的条形码详细信息中获取所有记录。编写一条LINQ/SQL语句,选择所需的列并对这两个表应用联接。我认为,如果您在SQL级别使用存储过程(例如)预处理所有这些计算,这将很重要。
List<VTSVehicleRegistrationObject> vehicleRegObject = (Some  Simple query to get the VehicleRegobject)
foreach (VTSVehicleRegistrationObject item in vehicleRegObject)
{
  barCodeDetails = barCodeDetailMaster.Where(x => x.VehicleId == Convert.ToInt32(item.VehicleId) && x.BarCodeId == item.BarCodeId).FirstOrDefault();
  { 
  //some Logic add item to this list.
  }