"Главный скребок головы - это то, почему я не могу использовать ToDictionary () [...]" без параметров *
Потому что метод ToDictionary
должен знать, что является ключом и каково значение. Microsoft могла бы создать перегрузку для этого особого случая, но не сделала этого, потому что, я полагаю, выгода не очень большая. Но ничто не мешает вам создать собственный метод расширения, который делает именно это.
"[...] или прямое приведение."
Поскольку ваш запрос Linq возвращает IEnumerable<KeyValuePair<TKey, TValue>>
, который не является Dictionary<TKey, TValue>
. Он позволяет вам перечислять пары ключ / значение, но не позволяет осуществлять быстрый поиск по ключу.
Обратите внимание, что Dictionary<TKey, TValue>
- это IEnumerable<KeyValuePair<TKey, TValue>>
, хотя (он реализует этот интерфейс), что означает, что вы можете перебирать пары ключ / значение так же, как вы делали с запросом Linq, но базовый тип - это Словарь , так что вы можете получить быстрый поиск по ключу.