如何使Array.Contains在string数组上不区分大小写?

我在string数组上使用Array.Contains方法。 我怎样才能使这个不区分大小写?

 array.Contains("str", StringComparer.OrdinalIgnoreCase); 

或者根据具体情况,您可能更喜欢:

 array.Contains("str", StringComparer.CurrentCultureIgnoreCase); array.Contains("str", StringComparer.InvariantCultureIgnoreCase); 

从我的一些重要笔记,或者至less把一些分布式信息放在一个地方 – 关于上面的提示与StringComparer像在:

 if (array.Contains("str", StringComparer.OrdinalIgnoreCase)) {} 
  1. array.Contains()是一个LINQ扩展方法,因此只能使用.NET 3.5或更高版本的标准工作。

  2. 但是:在.NET 2.0中,简单的Contains()方法(不考虑大小写不敏感)至less可以这样用cast:

    if ( ((IList<string>)mydotNet2Array).Contains(“str”) ) {}

  3. 除1之外:出于上述原因,1.中的StringComparer仅适用于以下名称空间包含(使用.NET 3.5进行testing):

    using System;

    using System.Linq;

  4. 除2之外: Contains()方法不仅适用于数组,它也适用于列表:-)

实现一个自定义的IEqualityComparer ,考虑到不区分大小写。

另外,请检查这一点 。 那么(理论上)你所要做的就是:

 myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower())) 
 new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true