关于list:C# – 在IList中查找不区分大小写的索引

C# - Find case insensitive index in IList

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

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

我不担心倍数,而且iList似乎不包含除IndexOf外的任何函数,这对我没有太大帮助。

编辑:因为我使用的是i list而不是list,所以我没有indexof函数,所以这里发布的答案对我没有太大帮助:)

谢谢,阿里克


要查找项的索引,可以使用FindIndex函数,并使用自定义谓词进行大小写不连续匹配。同样,您可以使用Find获取实际项目。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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));
}