我找到了使用不区分大小写的 contains 来确定
IList<string>
是否包含元素的答案:ilist.Contains(element, StringComparer.CurrentCultureIgnoreCase)
但我想做的是找到 IList 中与我正在搜索的元素相对应的元素本身。例如,如果 IList 包含
{Foo, Bar}
并且我搜索 fOo
,我希望能够接收 Foo
。
我不担心倍数,而且 IList 似乎不包含除
IndexOf
之外的任何函数,对我没有多大帮助。
编辑:由于我使用的是 IList 而不是 List,所以我没有 IndexOf 函数,所以这里发布的答案对我没有多大帮助:)
要查找项目的索引,您可以使用
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));
}