我有一个内存中的“表”,可能看起来像这样:
Favorite# Name Profession
--------- ---------- ------------------
3 Names.Adam Profession.Baker
9 Names.Bob Profession.Teacher
7 Names.Carl Profession.Coder
7 Names.Dave Profession.Miner
5 Names.Fred Profession.Teacher
而我想要做的是使用 3 个字段中的任何一个进行快速有效的查找。换句话说,我想要:
myTable[3]
并且myTable[Names.Adam]
全部myTable[Professions.Baker]
返回{3,Names.Adam,Profession.Baker}
myTable[Profession.Teacher]
同时返回{9,Names.Bob,Profession.Teacher}
和{5,Names.Fred,Profession.Teacher}
。
该表是在运行时根据用户的操作构建的,并且不能存储在数据库中,因为它用于无法保证数据库连接性的部分。
现在,我“简单地”(哈哈!)使用 3 个 uber-Dictionaries 存储它,每个使用列(FavoriteNumber,Name,Profession)之一键控,并且 uber-Dictionaries 中的每个值都包含 2 个本身键控的字典剩余的每一列(因此“名称”超级词典中的值属于类型Dictionary<FavoriteNumber,Profession[]>
和Dictionary<Profession, FavoriteNumber[]>
这需要在 2 个字典中进行 2 次查找,以及另一个数组遍历(通常包含 1 或 2 个元素。)
谁能建议一个更好的方法来做到这一点?我不介意花费额外的内存,因为该表可能很小(不超过 20 个条目),但我愿意牺牲一点 CPU 以使其更易于维护代码......