Answers:
array.Contains("str", StringComparer.OrdinalIgnoreCase);
或者,根据具体情况,您可能更喜欢:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
InvariantCulture。上面三种选择中的任何一种的使用都取决于具体情况。我不反对您重新排序,但是我删除了“可能不是”评论。答案中已经明确指出,您应该选择在当前情况下最适合您的一种。
我这边的一些重要注意事项,或者至少将一些分布式信息放在一个位置上-使用StringComparer与上面的技巧有关,例如:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
array.Contains() 是LINQ扩展方法,因此仅适用于.NET 3.5或更高版本,需要:
using System;
using System.Linq;
但是:在.NET 2.0 Contains()中,至少可以这样进行简单的方法(不考虑大小写不敏感),使用强制转换:
if ( ((IList<string>)mydotNet2Array).Contains(“str”) )
{}
由于Contains()方法是IList接口的一部分,因此它不仅适用于数组,而且适用于列表等。
实现一个自定义IEqualityComparer,它考虑了不区分大小写。
此外,检查这出。因此,从理论上讲,您要做的就是:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
CurrentCulture)的几乎所有情况下,都应使用Ordinal而不是InvariantCulture。