我的方法如下:
public static IList<MedicalRecord> UpdateServicePrice(
IList<MedicalRecord> mListMedicalRecord,
IList<ServicePrice> listAllServicePrice)
{
foreach (MedicalRecord medical in mListMedicalRecord)
{
medical.mListServicePrice =
(from p in listAllServicePrice
where p.MedicalRecordID == medical.MedicalRecordID
select p).ToList();
}
return mListMedicalRecord;
}
但运行速度非常慢。 任何人都可以帮助我改善上述方法的表现吗? 非常感谢。
答案 0 :(得分:3)
这是一个基于Join
的方法,它应该实现同样的目标,但速度更快:
public static IList<MedicalRecord> UpdateServicePrice(
IList<MedicalRecord> mListMedicalRecord,
IList<ServicePrice> listAllServicePrice)
{
foreach (var j in mListMedicalRecord.GroupJoin(listAllServicePrice,
mr => mr.MedicalRecordID,
sp => sp.MedicalRecordID,
(mr, sps) => new { Record = mr, Prices = sps }))
{
j.Record.mListServicePrice = j.Prices.ToList();
}
return mListMedicalRecord;
}
您的代码会为每个ServicesPrices
循环一次MedicalRecord
。加入会查看价格一次,按记录ID对它们进行分组,然后将它们连接到正确的记录。
答案 1 :(得分:0)
通过将'where'替换为'join'子句,您可能会获得显着的改进。