Я ищу структуру данных, похожую на словарь, который возвращает набор всех связанных элементов к ключу.
Например, я бы использовал это так:
var data = new FancyDataStructure();
data.Add(new string[] {"Elizabeth", "Liz", "Betty"});
data.Add(new string[] {"Bob", "Robert", "Rob"});
string[] alternateNames1 = data["Betty"];
string[] alternateNames2 = data["Liz"]
В этом случае alternateNames1 будет массивом, содержащим «Лиз» и «Элизабет», а alternateNames2 будет массивом, содержащим «Элизабет» и «Бетти».
Я не хочу изобретать это заново, но я не нашел примеров такой структуры.
Обновление
Спасибо тем, кто написал обратно с предложениями. Многие люди предлагают использовать какую-то версию Dictionary<string, IEnumerable<string>>
. В настоящее время я использую этот подход, но на самом деле он не соответствует требованию, не будучи ужасно сложным в обслуживании. Каждое значение в каждом списке должно быть способно функционировать как ключ к любому другому значению, когда-либо добавленному к нему в наборе.
Таким образом, учитывая следующее:
data.Add(new string[] {"Elizabeth", "Liz"}
data.Add(new string[] {"Liz", "Betty"}
alternates = data["Betty"];
Я бы ожидал, что теперь в альтернативах будут присутствовать "Элизабет" и "Лиз".
Похоже, мне просто нужно построить такую структуру, которая бы соответствовала моим потребностям. Продолжайте воплощать идеи в жизнь!
Brian