Огромный набор данных в памяти. Нужен быстрый поиск по свойству целочисленного идентификатора

У меня есть огромный набор данных в памяти (например, ~ 100К записей) простых объектов CLR определенного типа. Этот тип имеет общедоступное свойство int Id {get; набор;}. Какая структура .NET лучше всего может содержать этот огромный набор данных для обеспечения быстрого доступа к любому элементу по его идентификатору? В частности, предполагается, что этот набор данных будет обрабатываться внутри цикла для поиска элемента по идентификатору, поэтому поиск должен выполняться как можно быстрее. Поиск может выглядеть так:

// Find by id
var entity = entities.First(e => e.Id == id)

Структуры на основе IEnumerable, такие как коллекции и списки, будут проходить через каждый элемент данных, пока не будет найден элемент поиска. Какие есть альтернативные способы? Я считаю, что должен быть способ выполнить поиск отсортированных массивов по идентификатору, как поиск по индексу в базах данных.

Спасибо

Результаты тестирования : К вашему сведению: Словарь не просто быстрый, он просто несравненный. Мой небольшой тест показал прирост производительности с 3000+ мс (вызов First () в IEnumerable) до 0 ([индекс] в словаре)!

5
задан YMC 12 August 2011 в 21:22
поделиться