在IList中查找不区分大小写的索引

问题描述 投票:0回答:1

我找到了使用不区分大小写的 contains 来确定

IList<string>
是否包含元素的答案:
ilist.Contains(element, StringComparer.CurrentCultureIgnoreCase)

但我想做的是找到 IList 中与我正在搜索的元素相对应的元素本身。例如,如果 IList 包含

{Foo, Bar}
并且我搜索
fOo
,我希望能够接收
Foo

我不担心倍数,而且 IList 似乎不包含除

IndexOf
之外的任何函数,对我没有多大帮助。

编辑:由于我使用的是 IList 而不是 List,所以我没有 IndexOf 函数,所以这里发布的答案对我没有多大帮助:)

c# list
1个回答
1
投票

要查找项目的索引,您可以使用

FindIndex
函数和自定义谓词来执行不区分大小写的匹配。同样,您可以使用
Find
来获取实际项目。

我可能会创建一个扩展方法来用作重载。

public static int IndexOf(this List<string> list, string value, StringComparer comparer)
{
    return list.FindIndex(i => comparer.Equals(i, value));
}

public static int CaseInsensitiveIndexOf(this List<string> list, string value)
{
    return IndexOf(list, value, StringComparer.CurrentCultureIgnoreCase);
}

public static string CaseInsensitiveFind(this List<string> list, string value)
{
    return list.Find(i => StringComparer.CurrentCultureIgnoreCase.Equals(i, value));
}
© www.soinside.com 2019 - 2024. All rights reserved.