我有一个获取 IDictionary 作为参数的方法。现在我想提供一个从这个字典中检索值的方法,但它应该是大小写不变的。
所以我现在对此的解决方案是有一个静态函数,它遍历键并将它们转换为如下所示:
private static IDictionary<ILanguage, IDictionary<string, string>> ConvertKeysToLowerCase(
IDictionary<ILanguage, IDictionary<string, string>> dictionaries)
{
IDictionary<ILanguage, IDictionary<string, string>> resultingConvertedDictionaries
= new Dictionary<ILanguage, IDictionary<string, string>>();
foreach(ILanguage keyLanguage in dictionaries.Keys)
{
IDictionary<string, string> convertedDictionatry = new Dictionary<string, string>();
foreach(string key in dictionaries[keyLanguage].Keys)
{
convertedDictionatry.Add(key.ToLower(), dictionaries[keyLanguage][key]);
}
resultingConvertedDictionaries.Add(keyLanguage, convertedDictionatry);
}
return resultingConvertedDictionaries;
}
现在,这没关系,但它仍然是一个相当大的代码块,与我的“干净和高效”的想法相矛盾。您是否知道任何替代方法,以便字典的 .ContainsKey() 方法不区分大小写?