通过密钥查找.NET字典值的速度?

Ste*_*ill 6 .net lookup performance dictionary

我有一个10000产品/颜色/大小组合的字典,我用以下方法创建:

AllRecords = DB.ProductColourSizes _
             .ToDictionary(function(b) String.Format("{0}_{1}_{2}", _
             b.ProductCode, b.ColourCode, b.SizeCode))
Run Code Online (Sandbox Code Playgroud)

所以一个示例键就像"13AI_GRS_M"

我必须每隔30分钟将我的数据库与公司的ERP同步,对于每个颜色/大小组合,我需要使用此字典来添加,编辑或删除记录.我希望他们提供身份证号码.

我不知道词典在内部如何运作..NET根据这样的密钥找到正确的值有多快?我应该对数据库查询进行排序,还是.NET有其他方法来识别密钥?

或者我应该将其转换为List并使用Dictionary来识别正确的索引?或完全相反的方式?

我也以这种方式在网站的应用程序中使用静态字典,因此学习更好的方法可以产生相当大的影响.

非常感谢,史蒂夫

Bin*_*ier 5

对于你正在做的事情,字典是完美的。

字典中项目的键的检索时间非常快,但最终依赖于键的哈希码函数(在您的情况下string.GetHashCode())。

您很幸运,因为 .Net 字符串的 GetHashCode() 函数非常好。如果确实遇到哈希码冲突,.Net 将调用对象上的 Equals 方法,从而保证唯一性。

我们有包含数十万个项目的字典,查找时间可以忽略不计。

在这种情况下,对数据库中的结果集进行排序将没有任何好处。

希望这可以帮助。