不区分大小写的字典与字符串键型的C#(Case-INsensitive Dictionary wit

2019-07-17 12:08发布

如果我有一个Dictionary<String,...>是有可能使类似方法ContainsKey不区分大小写?

这似乎有关,但我没有正确理解它: C#词典:通过声明来使钥匙不区分大小写

Answer 1:

这似乎有关,但我没有正确理解它:C#词典:通过声明来使钥匙不区分大小写

这的确是相关的。 解决的办法是告诉字典示例中未使用标准的字符串比较方法(区分大小写),而是使用不区分大小写的。 这是使用进行适当的构造函数 :

var dict = new Dictionary<string, YourClass>(
        StringComparer.InvariantCultureIgnoreCase);

构造函数需要一个IEqualityComparer告诉字典如何对键进行比较。

StringComparer.InvariantCultureIgnoreCase给你一个IEqualityComparer这不区分大小写的方式比较字符串实例。



Answer 2:

var myDic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
myDic.Add("HeLlo", "hi");

if (myDic.ContainsKey("hello"))
    Console.WriteLine(myDic["hello"]);


Answer 3:

在有些情况下你的处理字典是从第三方或外部DLL拉几次机会。 使用LINQ

YourDictionary.Any(i => i.KeyName.ToLower().Contains("yourstring")))



文章来源: Case-INsensitive Dictionary with string key-type in C#