C# 不区分大小写的列表

C# 不区分大小写的列表,c#,.net,collections,C#,.net,Collections,我需要一个不区分大小写的列表或集合类型的集合(字符串)。最简单的创建方法是什么?您可以指定要在字典的键上进行比较的类型,但我找不到类似的列表。假设您使用的是.NET 3.5,您可以使用: var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase); var strings=newhashset(StringComparer.InvariantCultureIgnoreCase); 。。。

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

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

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
}