Сравнение без учета регистра - PullRequest
2 голосов
/ 02 декабря 2009

Как реализовать сравнение без учета регистра?

List<Person> persons = new List<Person>();
persons.Add(new Person("P005", "Janson"));
persons.Add(new Person("P002", "Arnold"));
persons.Add(new Person("P007", "Kazhal"));
persons.Sort((p1, p2) => p1.Name.CompareTo(p2.Name));

Ответы [ 5 ]

20 голосов
/ 02 декабря 2009
persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
6 голосов
/ 02 декабря 2009

Вы имеете в виду для строк? В этом случае вы можете перегрузить функцию Compare-Funciton , которая принимает третий параметр, логическое значение, определяющее чувствительность к регистру:

String.Compare(
    string1,   // String 1
    string2,   // String 2
    true       // IgnoreCase
);

Или, если хотите, но я не понимаю, почему, вы можете пойти очень грязным путем ...

string1.ToLower() == string2.ToLower()

С другой стороны, если вы очень взволнованы по поводу сравнения этих строк, вы можете использовать это:

string1.ToUpper() == string2.ToUpper()
2 голосов
/ 02 декабря 2009
"abc".Equals("ABC", StringComparison.OrdinalIgnoreCase)
1 голос
/ 02 декабря 2009

Вы можете просто позвонить

p1.Name.ToLower().CompareTo(p2.Name.ToLower())

для быстрой реализации. Возможно, не лучшее долгосрочное решение.

1 голос
/ 02 декабря 2009

Использование new CaseInsensitiveComparer().CompareTo(str1, str2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...