我有一个 masterDictionary<int, SolarSystem>
和几个较小Dictionary<int, JumpsHelperClass>
的 ,Dictionary<int, KillsHelperClass>
等。我的SolarSystem
类由这些较小的辅助类JumpsHelperClass
,KillsHelperClass
等组成。它们都由相同的int
键索引。
问题是,这些较小的字典是由异步 api 调用填充的,而我持有 master 的 master 类Dictionary<int, SolarSystem>
订阅,以便在他们获得新信息以更新其 master 列表时得到通知。但是,不能保证主列表具有较小列表在更新时所做的所有键。事实上,主词典可能完全是空的。
我尝试过这样的方法:
void JumpsRequest_UpdatedResults(object sender, EventArgs e)
{
foreach (int item in JumpsRequest.JumpsBySolarSystemID.Keys)
{
try
{
SolarSystemsByID[item].Jumps = JumpsRequest.JumpsBySolarSystemID[item];
}
catch (KeyNotFoundException ex)
{
SolarSystemsByID.Add(item, new SolarSystem(JumpsRequest.JumpsBySolarSystemID[item], new HelperClasses.KillsHelperClass()));
}
}
}
但这是非常低效的。每次JumpsRequest
从 api 获取新信息并更新其Dictionary<int, JumpsHelperClass>
. 有没有一种方法可以以某种方式合并字典,避免每次添加到 master 时的 try catch 开销。
主词典倾向于在任何给定时间保存大约 4-8k 个元素以供参考。
谢谢。