[英]c# Lookup for a value in Dictionary of Dictionary
我正在实施设计,其中信息按以下方式组织:
我想把它编码为:
// MasterDB :(0..m)SourceID -- 1..n -> [CaseID, InfoObject]
//
private Dictionary<string, Dictionary<string, InfoObject>> MasterDB;
Class InfoObject
{
string user;
}
这种方式添加和删除变得非常容易,因为他们使用 SourceID 和 CaseID 作为键。
但是查找有点特别。 我想查找特定用户(嵌入在 InfoObject 中)。
我应该如何重新组织以使查找和添加/删除的效率都变得很低?
更新:
我尝试了使用 LINQ 的不同方法
var targetList = from entry in MasterDB
from entrytarget in entry.Value
where (entrytarget.Value.user == username)
select entrytarget.Value;
小问题是返回的列表是一个 IEnumerable 列表。 不确定我是否可以通过其他方式制作 LINQ output。
您可以单独查找用户:
Dictionary<string, InfoObject> userLookup;
当然,这只有在您想优化查找速度时,缺点是您现在必须对两个必须保持同步的独立数据结构进行添加和删除。
我建议另外维护另一个字典,将user
映射到所有相关SourceID
/ CaseID
对的适当集合中。
我会使用Dictionary<string, IList<InfoObject>
因为没有什么能保证用户不能拥有多个 SourceID/CaseID 对。
每当您在其他字典中插入某些内容时,您也会在 IList 的该字典中插入相同的InfoObject
。 这样检索到的InfoObject
与 object 相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.