У меня есть проблемы с получением данных с помощью LINQ к SQL. Я использую следующую часть кода для поиска пользователя для нашего веб-приложения (имя пользователя является адресом электронной почты):
var referenceUser =
db.ReferenceUsers
.SingleOrDefault(rf => rf.Email == values["emailAddress"]);
Если я ввожу test@test.com
Я получаю a ReferenceUser
однако, если я ввожу tESt@tESt.com
Я не делаю. Как я могу заставить LINQ игнорировать регистр при выборе пользователя?
Работает ли:
var referenceUser =
db.ReferenceUsers.SingleOrDefault(
rf => rf.Email.ToUpper() == values["emailAddress"].ToUpper());
?
ToUpper ()
следует преобразовать в правильный SQL для выполнения в качестве запроса к базе данных, а затем вернуть оба результата.
var referenceUser = db.ReferenceUsers.SingleOrDefault(rf => string.Compare(rf.Email, values["emailAddress"],true)==0);
Где "истина" - игнорировать регистр или нет
Вот как я это сделал. Могу дать вам подсказку. У меня есть список с профилями, и я хочу найти имена профилей, содержащие «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();