在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")))