У меня есть огромный набор в памяти (например, ~ 100K записей) простых объектов CLR определенного типа.Этот тип имеет публичное свойство int Id {get;задавать;}.Какова лучшая структура .NET для хранения этого огромного набора данных, чтобы обеспечить быстрый доступ к любому элементу по его идентификатору?Более конкретно, предполагается, что этот набор данных будет использоваться внутри цикла для поиска элемента по Id, поэтому поиск следует выполнять как можно быстрее.Поиск может выглядеть следующим образом:
// Find by id
var entity = entities.First(e => e.Id == id)
IEnumerable основанные структуры, такие как коллекции и списки, будут проходить через каждый элемент данных, пока не будет найден искомый элемент.Каковы альтернативные способы?Я считаю, что должен быть способ сделать поиск отсортированных массивов по Id, как поиск по индексу в базах данных.
Спасибо
Результаты тестирования : К вашему сведению: словарь не просто быстрый, он просто несопоставим.Мой небольшой тест показал увеличение производительности примерно с 3000+ мс (вызов First () в IEnumerable) до 0 ([index] в словаре)!