我有一个获取IDictionary作为参数的方法。 现在我想提供一个从该字典中检索值的方法,但它应该是大小写不变的。将IDictionary <字符串,字符串>键转换为小写(C#)
所以我解决这个现在是有通过键循环,并把它们转换TOLOWER(静态函数)是这样的:
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()方法不区分套管?
谢谢!它工作正常,但我仍然需要查看ILanguage Dictionary并手动添加字典。 没办法,我可以摆脱这一点? –
Tigraine
2008-10-02 10:09:10
不是我可以立即想到的。这只是一个循环,尽管...几乎不可读。 如果你使用的是.NET 3.5,你可能简化它一点点,但我不会为此付出汗水。您可以更改原始字典的创建者以首先指定不区分大小写的比较器吗? – 2008-10-02 10:18:21