gpt4 book ai didi

c# - List FirstOrDefault() 性能不佳 - 在这种情况下可以使用字典吗?

转载 作者:行者123 更新时间:2023-11-30 13:41:39 24 4
gpt4 key购买 nike

我有一组在特定时间段内有效的“代码”Z。

因为我在一个大循环(百万+)中需要它们很多次,每次我必须查找相应的代码时,我将它们缓存在 List<> 中。找到正确的代码后,我插入(使用 SqlBulkCopy)一百万行。

我使用以下代码查找 ID(l_z 是一个 List<T>)

var z_fk = (from z in l_z
where z.CODE == lookupCode &&
z.VALIDFROM <= lookupDate &&
z.VALIDUNTIL >= lookupDate
select z.id).SingleOrDefault();

在其他情况下,我使用了性能极佳的字典,但在那些情况下,我只需要根据代码查找 id。

但现在搜索字段组合时,我被卡住了。

有什么想法吗?提前致谢。

最佳答案

创建一个字典来存储每个查找代码的项目列表 - Dictionary<string, List<Code>> (假设查找代码是一个字符串并且对象是代码类型)。

然后当你需要根据lookupDate查询时,您可以直接从 dict[lookupCode] 运行查询:

var z_fk = (from z in dict[lookupCode]
where z.VALIDFROM <= lookupDate &&
z.VALIDUNTIL >= lookupDate
select z.id).SingleOrDefault();

然后只要确保每当你有一个新的 Code 对象时,它就会被添加到 List<Code> 中。收藏于dict对应于lookupCode (如果不存在,则创建它)。

关于c# - List<T> FirstOrDefault() 性能不佳 - 在这种情况下可以使用字典吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4805605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com