因为list查询是顺序查询,所以比较慢,字典专门为了查询做了优化的。如果需要非常快地添加、删除和查找项目,而且不关心集合中项目的顺序,那么首先应该考虑使用 System.Collections.Generic.Dictionary<TKey, TValue>
//遍历备份表筛选数据
var dtlBackupList= ctx.Set<instockdetailtwo_bi_backup>()
.Where(o => dtlKeys.Contains(o.DetailtwoID)).ToList().ToDictionary(o => o.DetailtwoID);
var filterReceiveSheetConfirmDtlList = new List<instockdetailtwo>();
foreach (instockdetailtwo item in receivesheetconfirmsDtlList)
{
if (dtlBackupList.Keys.Contains(item.DetailtwoID))
{
var backupItem = dtlBackupList[item.DetailtwoID];
if (backupItem.SKUID == item.SKUID && backupItem.Qty == item.Qty && backupItem.IsDelete == item.IsDelete)
{
continue;
}
}
filterReceiveSheetConfirmDtlList.Add(item);
}