Во многих ситуациях для простоты я бы предпочел использовать List или HashSet в сочетании с LINQ вместо использования словаря. Однако я обычно придерживался словаря, потому что думал, что словарь будет более производительным из-за его реализации хеш-таблицы.
Например:
Когда я делаю это в LINQ:
bool exists = hashset.Any(item => item.Key == someKey);
Потеряю ли я значительную производительность по сравнению со следующим эквивалентом со словарем?
bool exists = dictionary.ContainsKey(someKey); // an O(1) operation
Оптимизированы ли запросы LINQ таким образом, чтобы их можно было оправдать по сравнению со словарем? Или приведенная выше операция Any () является простой операцией O (n) независимо от типа выполняемой коллекции?