Me encontré con el mismo tipo de problemas donde necesitaba un diccionario caseINsensitive en un controlador ASP.NET Core.
Escribí un método de extensión que hace el truco. Quizás esto también pueda ser útil para otros ...
public static IDictionary<string, TValue> ConvertToCaseInSensitive<TValue>(this IDictionary<string, TValue> dictionary)
{
var resultDictionary = new Dictionary<string, TValue>(StringComparer.InvariantCultureIgnoreCase);
foreach (var (key, value) in dictionary)
{
resultDictionary.Add(key, value);
}
dictionary = resultDictionary;
return dictionary;
}
Para usar el método de extensión:
myDictionary.ConvertToCaseInSensitive();
Luego obtenga un valor del diccionario con:
myDictionary.ContainsKey("TheKeyWhichIsNotCaseSensitiveAnymore!");
StringComparer.InvariantCultureIgnoreCase
? Hace lo que dice ...