Respostas:
array.Contains("str", StringComparer.OrdinalIgnoreCase);
Ou, dependendo da circunstância específica, você pode preferir:
array.Contains("str", StringComparer.CurrentCultureIgnoreCase);
array.Contains("str", StringComparer.InvariantCultureIgnoreCase);
InvariantCulture. O uso de qualquer uma das três opções acima depende da circunstância. Não sou contra sua reordenação, mas estou removendo o comentário "provavelmente não". Já ficou claro na resposta que você deve escolher aquele que funciona para você na situação atual.
Algumas notas importantes do meu lado, ou pelo menos colocar algumas informações distribuídas em um só lugar - sobre a dica acima com um StringComparer como em:
if (array.Contains("str", StringComparer.OrdinalIgnoreCase))
{}
array.Contains() é um método de extensão LINQ e, portanto, funciona por padrão somente no .NET 3.5 ou superior, precisando:
using System;
using System.Linq;
Mas: no .NET 2.0, o Contains()método simples (sem levar em consideração a insensibilidade do caso) é pelo menos possível assim, com uma conversão:
if ( ((IList<string>)mydotNet2Array).Contains(“str”) )
{}
Como o método Contains () faz parte da interface IList, isso funciona não apenas com matrizes, mas também com listas, etc.
Implementar um IEqualityComparer personalizado que leve em consideração a distinção entre maiúsculas e minúsculas.
Além disso, verifique isso . Então (em teoria) tudo o que você precisa fazer é:
myArray.Contains("abc", ProjectionEqualityComparer<string>.Create(a => a.ToLower()))
new[] { "ABC" }.Select(e => e.ToLower()).Contains("abc") // returns true
CurrentCulture), você deve usar emOrdinalvez deInvariantCulture.