Это казалось связанным, но я не понял его правильно: С# Словарь: создание ключа без учета регистра с помощью объявлений
Это действительно связано. Решение состоит в том, чтобы указать экземпляру словаря не использовать стандартный метод сравнения строк (который чувствителен к регистру), а скорее использовать регистр, нечувствительный. Это делается с помощью соответствующего конструктора:
var dict = new Dictionary<string, YourClass>(
StringComparer.InvariantCultureIgnoreCase);
Конструктор ожидает IEqualityComparer, который сообщает словарю, как сравнивать ключи.
var myDic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
myDic.Add("HeLlo", "hi");
if (myDic.ContainsKey("hello"))
Console.WriteLine(myDic["hello"]);
Ответ 3
Есть мало шансов, когда вы имеете дело со словарем, который вытягивается из сторонней или внешней dll. Использование linq