Как игнорировать случай с LINQ-to-SQL?

У меня возникают проблемы с получением данных с использованием LINQ-to-SQL. Я использую следующий фрагмент кода для поиска пользователя для нашего веб-приложения (имя пользователя - адрес электронной почты):

var referenceUser = 
    db.ReferenceUsers
      .SingleOrDefault(rf => rf.Email == values["emailAddress"]);

Если я набираю [email protected], я получаю a ReferenceUser, однако, если я набираю [email protected], я этого не делаю. Как я могу заставить LINQ игнорировать случай при выборе пользователя?

Ответ 1

ли:

var referenceUser = 
    db.ReferenceUsers.SingleOrDefault(
        rf => rf.Email.ToUpper() == values["emailAddress"].ToUpper());

работа?

ToUpper() следует перевести в правильный SQL для запуска в качестве запроса к базе данных, а затем вернуть оба результата.

Ответ 2

var referenceUser = db.ReferenceUsers.SingleOrDefault(rf => string.Compare(rf.Email, values["emailAddress"],true)==0);

Где "истина" - это игнорировать случай или нет

Ответ 3

Вот как я это сделал. Можете дать вам подсказку. У меня есть список с профилями, и я хочу искать профили, содержащие "aR", "Ar" или "AR".

List<Profile> profileList = CreateProfile();
string search = "aR".ToLower();

profileList = (from p in profileList where p.Name.ToLower().Contains(search)
        orderby p.Name select p).ToList();

Ответ 4

listTasks.ItemsSource
    = taskList.Where( x => x.TaskDescription.ToLower()
                            .ToString()
                            .StartsWith(txtSearch.Text.Trim()
                            .ToLower()
                            .ToString()));