C# 不区分大小写的列表
我需要一个不区分大小写的列表或集合类型的集合(字符串)。最简单的创建方法是什么?您可以指定要在字典的键上进行比较的类型,但我找不到类似的列表。假设您使用的是.NET 3.5,您可以使用:C# 不区分大小写的列表,c#,.net,collections,C#,.net,Collections,我需要一个不区分大小写的列表或集合类型的集合(字符串)。最简单的创建方法是什么?您可以指定要在字典的键上进行比较的类型,但我找不到类似的列表。假设您使用的是.NET 3.5,您可以使用: var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase); var strings=newhashset(StringComparer.InvariantCultureIgnoreCase); 。。。
var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
var strings=newhashset(StringComparer.InvariantCultureIgnoreCase);
。。。或者类似的,你也可以选择合适的文化背景
大多数情况下,列表实际上没有比较的概念——只有在调用
IndexOf
和相关方法时。我不相信有任何方法可以指定用于此目的的比较。您可以使用列表。但是,查找带有谓词的。类似的故事,在此处查找
e、 g
似乎可以利用KeyedCollection类:
public class Set<T> : KeyedCollection<T,T>
{
public Set()
{}
public Set(IEqualityComparer<T> comparer) : base(comparer)
{}
public Set(IEnumerable<T> collection)
{
foreach (T elem in collection)
{
Add(elem);
}
}
protected override T GetKeyForItem(T item)
{
return item;
}
}
公共类集:KeyedCollection
{
公共集()
{}
公共集(IEqualityComparer比较器):基础(比较器)
{}
公共集(IEnumerable集合)
{
foreach(集合中的元素)
{
添加(elem);
}
}
受保护的覆盖T GetKeyForItem(T项)
{
退货项目;
}
}
使用Linq,这将为添加一个新方法。比较
using System.Linq;
using System.Collections.Generic;
List<string> MyList = new List<string>();
MyList.Add(...)
if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
//found
}
使用System.Linq;
使用System.Collections.Generic;
List MyList=新列表();
MyList.Add(…)
if(MyList.Contains(TestString、StringComparer.CurrentCultureIgnoreCase)){
//发现
}
我很遗憾地被.Net 2困住了:(你不需要'Linq'来使用Containsmethod@geo1701:但是您确实需要使用System.Linq来使用StringComparer
获得新的重载!谢谢,回答得好,我希望有一个扩展,而不是编写自己的扩展。否则我就不知道去哪里找了!
using System.Linq;
using System.Collections.Generic;
List<string> MyList = new List<string>();
MyList.Add(...)
if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
//found
}