通缉:.Net集合,可以快速高效地存储一堆不区分大小写的字符串

时间:2011-01-14 19:53:37

标签: c# .net collections generics

我正在寻找一个简单的集合,它将以不区分大小写的方式存储一堆字符串。我至少需要一个Contains()Remove()方法来查看是否存在某个字符串并删除该字符串。

我已经尝试List<string>,但那个是区分大小写的。我需要使用不区分大小写的Dictionary<TKey, T>,但这“感觉”就像浪费空间一样。在每个字符串上执行ToLower()会浪费性能。

有谁知道我应该使用什么样的.Net系列?

5 个答案:

答案 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()方法,这些方法执行不区分大小写的比较。