【发布时间】:2021-06-01 12:06:12
【问题描述】:
我需要将一个列表中的值匹配到另一个列表。
两者都是列表。两者都有数十万条记录。
希望有人能告诉我一种方法来加快速度,因为它需要很长时间才能匹配。
foreach (var item in availabilityItems)
{
foreach (var page in from page in pricePageList
where item.Number == page.VendorItemNo
where item.StartDate == page.SubSeasonStartDate
where item.EndDate == page.SubSeasonEndDate
select page)
{
item.VendorItemNo = page.VendorItemNo;
item.PricePageNo = page.PricePageNo;
item.NaItemNo = page.ItemNo;
}
}
【问题讨论】:
-
当你说记录时,你从哪里得到记录?是数据库吗?
-
AvailabilityItems 是来自 csv 的数据,PricePageList 是来自 SQL 查询的数据。 “记录”可能不是正确的术语。行可能?编辑:我注意到你使用导航。我使用术语记录,因为我也是 C/AL 开发人员。
-
对数据进行排序肯定会产生巨大的影响,所以让我们从这个开始:数据是如何排序的?对于SQL,是否有能力更改
ORDER BY子句? -
我不认为 C/AL 是一门值得学习的语言,它经常激怒我,它只是一种必要的邪恶 :)
-
恕我直言,将 csv 数据转储到表中,甚至可能直接通过批量插入流式传输数据。
item和page是同一类型吗?或者项目表应该加入价格表,没有真正的 FK,这样你就可以简单地截断/替换价格。