Сегодня на работе провёл тесты:
Класс FieldTestA, имеет int _id и string _name.
И класс FieldTestB, имеет string _name.
Параметры для доступа к ним, и конструкторы.
Создание в List<FieldTest> и Dictionary<int,FieldTestB>, одинакого, немного шустрее естественно в Dictionary.
Но при поиске разница огромная конечно. Чуть ли не в 10 раз. При этом в первом варианте ещё зависит от разницы максимального и минимального ID.
Во втором варианте сразу же профит: если нету такого Key, это можно получить спец функцией самого Dictionary, что избавляет от каких либо поисков.
И получение объекта сразу по ID, очень шустрое.
Только вот обратный вариант - получение ID по одному из параметров у объекта, всё равно нужно листать. Но всё-же, это в разы шустрее