我有一个获取 IDictionary 作为参数的方法。 现在我想提供一种从这个字典中检索值的方法,但它应该是大小写不变的。
所以我现在的解决方案是使用一个静态函数来循环遍历键并将它们转换为 Lower(),如下所示:
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() 方法不区分大小写?
最佳答案
是 - 传递字典构造函数 StringComparer.OrdinalIgnoreCase
(或另一个忽略大小写的比较器,具体取决于您的文化敏感性需求)。
关于c# - 将 IDictionary<string, string> 键转换为小写 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/161556/