字典列表(搜索优化,C#)

时间:2012-01-23 16:13:50

标签: c# search optimization dictionary

我有一个词典列表,List<Dictionary<String,Object>>。关键是一些抽象记录的标识符。这些词典来自不同的地方。每个字典的大小在[0,1000]范围内。

所有词典都包含唯一键。累积一些字典后,我必须按键搜索。它可以通过迭代List并在每个Dictionary上调用搜索方法来完成,也可以通过将所有Dictionaries复制到一个来完成。这些方法不能提供非常好的性能。我对如何优化此任务感兴趣。

修改 感谢你们!也许我会改变累积方法,结果消除了问题本身!

4 个答案:

答案 0 :(得分:1)

您是否期望在初始人口阶段之后有很多关键提取?如果是这样,将所有内容合并为一个字典。如果您只进行少数提取,我看不出任何方式可以比询问每个字典更好。

当然,您可以创建一种混合方法:为合并的结果创建一个新的(最初为空的)字典,并在您被要求输入密钥时填充它 - 通过每次要求您搜索所有其余内容时搜索所有其他字典你的“大字典”中尚未出现的密钥。

有没有办法预测哪个字典会有特定的密钥?

答案 1 :(得分:1)

如果任何方式通过指定key来本地化感兴趣的字典,您可以尝试自然地创建一个交叉关联表,其中您可以尝试将keydictionary匹配。

如果没有,imho,看不到任何其他选项只是迭代收集并要求key,可能使用标准for更好的linq编码

答案 2 :(得分:1)

除了Jon所说的,还有一个名为PowerCollections的API,它包含MultiDictionary。如果我的记忆没有被破坏,我相信,你可以将它用于上述目的。

http://powercollections.codeplex.com/discussions/242163

答案 3 :(得分:1)

听起来你有很多字典可以“加速”(动机假设)搜索,这些搜索仅限于某些“抽象记录”类型。

您可以使用单个字典,但在有限的搜索中,检查结果是找到后需要的抽象记录类型。而不是像目前那样为每个抽象记录类型维护单个字典。