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

时间:2017-08-28 06:29:36

标签: c# list

我找到了确定IList<string>是否包含使用不区分大小写的元素的答案:ilist.Contains(element, StringComparer.CurrentCultureIgnoreCase)

但我想要做的是找到IList中对应的元素本身到我搜索的元素。例如,如果IList包含{Foo, Bar}并且我搜索fOo,我希望能够接收Foo

我并不担心倍数,并且IList似乎不包含除IndexOf以外的任何功能,但对我没什么帮助。

编辑:因为我使用的是IList而不是List,所以我没有使用IndexOf功能,所以这里发布的答案对我没什么帮助:))

谢谢, 阿里克

1 个答案:

答案 0 :(得分: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));
}