Відповіді:
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.