在C#中使用string键types的不区分大小写字典

如果我有一个Dictionary<String,...>是否有可能使像ContainsKey这样的方法不区分大小写?

这似乎是相关的,但我没有正确理解: c#字典:通过声明使关键不区分大小写

这似乎是相关的,但我没有正确理解:c#字典:通过声明使关键不区分大小写

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

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

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

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

  var myDic = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase); myDic.Add("HeLlo", "hi"); if (myDic.ContainsKey("hello")) { Console.WriteLine(myDic["hello"]); } 

从第三方或外部dll提取字典的机会很less。 使用linq

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

Interesting Posts