Лучший способ сравнить 2 строки, игнорируя регистр букв, - это использовать статический метод String.Equals , задающий порядковое игнорирование сравнения строк регистра. Это также самый быстрый способ, гораздо быстрее, чем преобразование строк в нижний или верхний регистр и сравнение их после этого.
Я проверил производительность обоих подходов, и сравнение строк в регистре игнорирования было более чем в 9 раз быстрее ! Это также более надежно, чем преобразование строк в нижний или верхний регистр (см. Проблему Turkish i). Поэтому всегда используйте метод String.Equals для сравнения строк на равенство:
String.Equals(string1, string2, StringComparison.OrdinalIgnoreCase);
Если вы хотите выполнить сравнение строк для конкретной культуры, вы можете использовать следующий код:
String.Equals(string1, string2, StringComparison.CurrentCultureIgnoreCase);
Обратите внимание, что во втором примере используется логика сравнения строк текущей культуры, что делает его более медленным, чем сравнение "порядкового игнорирования регистра" в первом примере, поэтому, если вам не нужна логика сравнения строк для конкретной культуры и вы после максимальной производительности, используйте сравнение «порядковый регистр игнорирования».
Для получения дополнительной информации, прочитайте полную историю в моем блоге .