Возвращаемые значения в нижнем регистре - PullRequest
0 голосов
/ 09 мая 2018

Недавно мы обнаружили ошибку в нашей системе, из-за которой любые серийные номера, которые были введены в нижнем регистре, не были обработаны правильно.

Чтобы исправить это, нам нужно добавить функцию одноразового использования, которая будет запускаться через базу данных и повторно обрабатывать все элементы с серийными номерами в нижнем регистре.

В linq можно ли выполнить запрос, который выдаст список таких элементов?

Примечание: я не спрашиваю, как преобразовать строчные буквы в прописные или обратные, что все, что Google вернет. Мне нужно создать список всех записей в базе данных, где серийный номер был введен в нижнем регистре.

РЕДАКТИРОВАТЬ: я использую Linq для MS SQL, который, как представляется, без учета регистра.

1 Ответ

0 голосов
/ 09 мая 2018

Да, есть. Вы можете попробовать что-то вроде этого:

var result = serialnumber.Any(c => char.IsLower(c));

[EDIT]

Ну, в случае Linq to Entities ...

Как указано здесь: Regex в Linq (EntityFramework), Обработка строк в базе данных , есть несколько способов обойти это.

  • Изменить структуру таблицы базы данных. Например. создайте таблицу Foo_Filter, которая свяжет ваши сущности с фильтрами. А затем создать таблицу фильтров который будет содержать фильтры данных.

  • Выполнить запрос в памяти и использовать Linq to Objects . Эта опция будет медленной, потому что вам нужно извлечь все данные из базы данных в память

Примечание: я добавил ссылку на документацию MSDN.

Например:

var result = context.Serials.ToList().Where(sn => sn.Any(c => char.IsLower(c)));

Другой способ - использовать SqlMethods.Like Method

Наконец, я настоятельно рекомендую прочитать это: Поиск с учетом регистра с использованием Entity Framework и пользовательской аннотации

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