Acabei de encontrar o mesmo tipo de problema em que precisava de um dicionário caseINsensitive em um controlador ASP.NET Core.
Eu escrevi um método de extensão que faz o truque. Talvez isso possa ser útil para outros também ...
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 o método de extensão:
myDictionary.ConvertToCaseInSensitive();
Em seguida, obtenha um valor do dicionário com:
myDictionary.ContainsKey("TheKeyWhichIsNotCaseSensitiveAnymore!");
StringComparer.InvariantCultureIgnoreCase
? Ele faz o que diz ...