不区分大小写的列表

我需要一个不区分大小写的列表或集合类型的集合(字符串)。 创建一个最简单的方法是什么? 您可以指定要在Dictionary的键上获得的比较类型,但我找不到任何类似的List。

假设您使用的是.NET 3.5,您可以使用:

var strings = new HashSet(StringComparer.InvariantCultureIgnoreCase); 

…或类似的东西,你也可以选择适当的文化背景。

只有在调用IndexOf和相关方法时,列表才真正具有大部分比较的想法。 我不相信有任何方法可以指定用于此的比较。 但是,您可以使用List.Find with predicate。

使用Linq,这为.Compare添加了一个新方法

 using System.Linq; using System.Collections.Generic; List MyList = new List(); MyList.Add(...) if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) { //found } 

看起来可以利用KeyedCollection类:

 public class Set : KeyedCollection { public Set() {} public Set(IEqualityComparer comparer) : base(comparer) {} public Set(IEnumerable collection) { foreach (T elem in collection) { Add(elem); } } protected override T GetKeyForItem(T item) { return item; } } 

类似的故事在这里寻找检查包含

例如

 public static bool Contains(this string source, string toCheck, StringComparison comp) { return source.IndexOf(toCheck, comp) >= 0; } 
 var Addresses = Pr.Where(a = >a.Key.ToUpper() == "KEY VALUE").ToList(); 

只需将密钥设为大写,然后搜索大写值即可