Итак, вы хотите многоиндексный словарь, поддерживает поиск по любому ключу и поддерживает расширения для нескольких ключей?
Возможно, вы думаете о неправильной структуре данных, вместо этого попробуйте KD-Tree . Неизменяемое дерево KD будет удовлетворять требованию безопасности потока.
KD-деревья имеют ряд важных преимуществ по сравнению с наивным Dictionary{Key1, Dictionary{Key2, Value}}
подходом, а именно то, что вы можете искать все поля на основе Key2, не зная Key1. Кроме того, KD-деревья позволяют искать ключи, которые около некоторых других ключей. Например, сайты знакомств классифицируют людей по десяткам групп (курильщик / некурящий, пол, религия, образ жизни, возраст, рост), а затем возвращают ближайших соседей по вашему запросу.
Вот реализация на C # и Java:
http://home.wlu.edu/~levys/software/kd/