关于集合:C#中字符串键类型的不区分大小写字典

Case-INsensitive Dictionary with string key-type in C#

如果我有一个Dictionary,有没有可能使像ContainsKey这样的方法不区分大小写?

这似乎有关联,但我没有正确理解:C字典:通过声明使密钥不区分大小写


This seemed related, but I didn't understand it properly: c# Dictionary: making the Key case-insensitive through declarations

它确实是相关的。解决方案是告诉字典实例不要使用标准的字符串比较方法(区分大小写),而是使用不区分大小写的方法。这是使用适当的构造函数完成的:

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

构造函数需要一个IEqualityComparer,它告诉字典如何比较键。

StringComparer.InvariantCultureIgnoreCase提供了一个IEqualityComparer实例,它以不区分大小写的方式比较字符串。


1
2
3
4
5
var myDic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
myDic.Add("HeLlo","hi");

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


很少有机会处理从第三方或外部dll中提取的字典。使用LINQ

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