Существует ли готовый универсальный тип коллекции для .Net, который сочетает в себе семантику Set и Dictionary, так что я сохраняю только элементы, но могу также выполнять быстрый поиск по некоторому ключу, полученному из каждого элемента ? Примерно так:
var foos = new KeyedSet<string, Foo>(foo => foo.ID);
foos.Add(new Foo { ID = "X234", Descr = "One foo" });
foos.Add(new Foo { ID = "Q909", Descr = "Another foo" });
Console.WriteLine("Foo Q909 is {0}", foos["Q909"].Descr);