我从两个表中获取记录一个是VehicleDetails,另一个是Barcodedetails。
车辆详细信息包含10,000条记录和条形码详细信息包含110万条记录,每辆车都映射到特定的Bardcode。
目前我所做的首先是从BarcodeDetailsTable获取所有BarcodeDetails并且需要8秒才能完成它,
List<VTSBarCodeDetail> barCodeDetailMaster = barCodeDetailRepository.Get(null, null) as List<VTSBarCodeDetail>;
然后我将获得车辆详细信息
List<VTSVehicleRegistrationObject> vehicleRegObject = (Some Simple query to get the VehicleRegobject)
然后我在这个for循环中运行for循环我将barcodeno passtype等细节添加到列表中。这个for循环需要1分钟的时间才能完成6k记录。 这是我的代码和日志文件看看这个。
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.
}
答案 0 :(得分:1)
首先,你为什么要这样做?更多上下文将有所帮助。如果你真的想为每个VehicleDetail条目使用BarCodeDetails,那么嵌套循环需要时间,我的意思是很长时间。
line:// some Logic将项目添加到此列表中。
建议您要处理每个条目。
假设你真的想要这样做并处理10000 x 110万条目,这里有一些建议:
如果输出不合适,你可以用线程处理和合并列表中的数据做更聪明的事情,但这完全取决于你想要做的事情....
如果您需要更多帮助,希望这有助于或者提供更多详细信息
答案 1 :(得分:-1)
barCodeDetails = barCodeDetailMaster.Where(x =&gt; x.VehicleId == Convert.ToInt32(item.VehicleId)&amp;&amp; x.BarCodeId == item.BarCodeId).FirstOrDefault();
请更改如下。
barCodeDetails = barCodeDetailMaster.FirestOrDefault(x =&gt; x.VehicleId == Convert.ToInt32(item.VehicleId)&amp;&amp; x.BarCodeId == item.BarCodeId);