Мне интересно, какую структуру данных люди порекомендуют сделать следующим образом. У меня есть класс, который имеет три основных свойства, например.
public class Example {
public Object One { get; }
public Object Two { get; }
public Object Three { get; }
}
Другой класс содержит коллекцию этих объектов и часто должен перечислять их, что я делаю в основном с LINQ. Хотя в большинстве случаев мне нужно искать / перечислять только подмножество этих объектов, основываясь в основном на значении свойства One, поэтому я хотел бы сохранить их в эффективной структуре данных, основанной на этом свойстве. Я мог бы сделать что-то вроде следующего:
Dictionary<Object,List<Example>>
Но мне кажется, что я очень неэффективен, я знаю, что мне нужен какой-то хэш-стол, но я никогда не использовал его раньше в C #, и я не уверен, что можно использовать.
Некоторые другие требования / примечания:
- Все объекты являются неизменяемыми и имеют фиксированные хеш-коды, которые вычисляются из значений, с которыми создается экземпляр класса в конструкторах
- Должен иметь возможность хранить несколько элементов с одинаковым значением (и, следовательно, хэш-кодом) для свойства One в одном и том же «слоте» в структуре данных
- Должен иметь возможность свободно добавлять и удалять объекты из коллекции