Ответ 1

ILookup записи могут содержать несколько элементов для каждой клавиши - каждая клавиша отображается на IEnumerable<TElement>.

Также как и намечено в комментариях, ILookup неизменен, в то время как вы можете обновлять значения в IDictionary (он предоставляет метод Add() и индекс, который позволяет получать настройки и значения).

Вкратце, их вариант использования очень отличается - вы используете поиск, когда вам нужна карта 1: N со значениями, которые фиксированы и не будут (и не могут) изменяться. С другой стороны, словарь предлагает изменчивое сопоставление пар значений ключа 1:1, поэтому его можно обновить, чтобы добавить или удалить значения.

Ответ 2

Это намного проще, чем IDictionary. Он используется Linq. Он имеет только Contains, Item и Count. IDictionary имеет Add, Remove и т.д.