我正在寻找一个简单的集合,它将以不区分大小写的方式存储一堆字符串。我至少需要一个Contains()
和Remove()
方法来查看是否存在某个字符串并删除该字符串。
我已经尝试List<string>
,但那个是区分大小写的。我需要使用不区分大小写的Dictionary<TKey, T>
,但这“感觉”就像浪费空间一样。在每个字符串上执行ToLower()
会浪费性能。
有谁知道我应该使用什么样的.Net系列?
答案 0 :(得分:18)
您应该使用new HashSet<string>(StringComparer.OrdinalIgnoreCase)
请注意,这是一个无序集。
答案 1 :(得分:2)
您可以使用StringDictionary
。
答案 2 :(得分:0)
今天要解决同样的问题。如果你可以包含Linq,那么你的List会使用比较器来重载方法。
using System.Linq;
List<string> stringList = new List<string>();
stringList.Contains("hello", StringComparer.OrdinalIgnoreCase);
希望这会有所帮助: 马丁
答案 3 :(得分:0)
默认情况下,Dictionary不区分大小写。但是您可以实现自己的变体以使其变得不敏感。 (我可能错了:D)
我和Dictionary有同样的问题但是在尝试了很多IEquality实现之后,最后我用LINQ解决了这个问题。
string k = customers.Where(c => c.Key.Equals(valueToSearch, StringComparison.OrdinalIgnoreCase)).FirstOrDefault().Key;
if (!string.IsNullOrEmpty(k) && k.ToUpper() == valueToSearch.ToUpper())
{
// Do some thing
}
希望这将有助于将来。
Sanjay Zalke
答案 4 :(得分:-1)
编写您自己的Contains()
和Remove()
方法,这些方法执行不区分大小写的比较。