Подтвердить что ты не робот

С# Сравнение строк с различным случаем

Я читаю имя пользователя, а затем проверяю, существует ли в другой таблице базы данных, проблема в том, что имя пользователя совпадает с тем случаем, которое может быть другим, и мешает ему найти пример соответствия jsmith и JSmith или JSMITH.

Как я могу это исправить? Должен ли я уменьшить регистр при записи в первую базу данных или изменить код ниже, когда я сравниваю эти два?

drUser["Enrolled"] = 
    (enrolledUsers.FindIndex(x => x.Username == (string)drUser["Username"]) != -1);

UPDATE:

Все еще борясь с этим, приведенный ниже код компилируется, но не дает правильного результата при просмотре зарегистрированных пользователей. Я вижу те, которые не зарегистрированы, при просмотре тех, которые не зарегистрированы. Я вижу 1, который зарегистрирован, но их имя пользователя случай одинаковый в каждом datababse. Я правильно отформатировал код ниже?

drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));

Спасибо Джейми

4b9b3361

Ответ 1

Вам нужно выполнить метод Equals, который принимает параметр StringComparison.

Например:

x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)

Если x.Username может быть null, вы должны вызвать метод static Equals:

String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)

В противном случае x.Username.Equals может выбросить NullReferenceException.

Ответ 2

Предпочтительный способ сделать это - указать сравнение строк, используя что-то вроде

string.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase

чтобы выполнить проверку равенства вместо "=="

Ответ 3

Как использовать ToUpper().

 if(!(dr["Enrolled"] == null || dr["Username"] == null))
 {
    if(dr["Enrolled"].ToString().ToUpperInvariant()== dr["Username"].ToString().ToUpperInvariant())
    {
        //Do Something
    }
}

Ответ 4

Вы пробовали это?

string userName = (string)drUser["Username"];
bool enrolled = enrolledUsers.Exists(x =>
  string.Equals(x.Name, userName, StringComparison.CurrentCultureIgnoreCase));

Есть ли причина, по которой вы используете FindIndex?