.net 不区分大小写的列表

jk9hmnmh  于 2023-04-22  发布在  .NET
关注(0)|答案(4)|浏览(174)

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

frebpwbc

frebpwbc1#

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

var strings = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);

...或类似的东西,在那里你也会选择适当的文化背景。
列表在大多数情况下并没有真正的比较概念-只有当你调用IndexOf和相关方法时。我不相信有任何方法可以指定用于比较的方法。但是,你可以使用List<T>.Find和 predicate 。

gcmastyq

gcmastyq2#

使用Linq,这将向添加一个新方法。比较

using System.Linq;
using System.Collections.Generic;

List<string> MyList = new List<string>();

MyList.Add(...)

if (MyList.Contains(TestString, StringComparer.CurrentCultureIgnoreCase)) {
    //found
}
0x6upsns

0x6upsns3#

看起来可以利用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;
    }
}
tgabmvqs

tgabmvqs4#

类似的故事在这里寻找检查contains
例如

public static bool Contains(this string source, string toCheck, StringComparison comp)
        {
            return source.IndexOf(toCheck, comp) >= 0;
        }

相关问题