c# - 将 IDictionary<string, string> 键转换为小写 (C#)

标签 c# .net idictionary

我有一个获取 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/

相关文章:

c# - 我如何在 namedPipeWrapper 中在服务器和客户端之间推送消息?

asp.net - 使用 C# 将字典转换为 XML

c# - 使用 ExpandoObject 和 IDictionary 创建 JSON 时允许同一键有多个值

.net - 官方 LINQ 扩展方法

c# - Java 或 C# 的线程是基于用户空间线程还是内核空间线程?

c# - 尝试使用 Autodesk.AutoCAD.DatabaseService 从 DWG 中读取数据 我需要引用什么 DLL?

c# - 为什么 C# Dictionary 不实现所有 IDictionary?

c# - 异步 CTP 可以与可移植库一起使用吗

c# - 什么情况下调用了Application_EndRequest但没有调用Application_BeginRequest?

c# - 尽管 State=Modified,为什么 EF Core 只生成父(游戏)属性更新?