Ответ 1

StringDictionary происходит от .Net 1, который предшествует дженерикам.

Поэтому, в отличие от Dictionary<String, String>, он не реализует никаких общих интерфейсов, поэтому его нельзя использовать с LINQ (если вы не Cast())

Кроме того, StringDictionary нормализует все клавиши в нижнем регистре.
(Чтобы сделать нечувствительность к регистру Dictionary<String, String>, пройдите StringComparer.OrdinalIgnoreCase, это также более совместимо с Турцией)