Как проверить содержимое строки в запросе к базе данных LINQC#

Место общения программистов C#
Ответить
Anonymous
 Как проверить содержимое строки в запросе к базе данных LINQ

Сообщение Anonymous »

В моем запросе LINQ я хочу проверить, что за числовой строкой следуют только нечисловые символы. В регулярном выражении это будет выглядеть примерно так: ^[0-9]+[^0-9]*$
Однако я обнаружил, что LINQ может t перевести регулярное выражение.
Я также пробовал сделать следующее:

Код: Выделить всё

List numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'];
var queryableNumbers = numbers.AsQueryable();

from ...
where
...
&& row.content.ToUpper().StartsWith(searchTerm)
&& !queryableNumbers.Any(number => row.content.Substring(searchTerm.Length).Contains(number))
...
Это также не работает, потому что LINQ по какой-то причине не может его перевести. Проблема заключается в строке !queryableNumbers.Any(number => row.content.Substring(searchTerm.Length).Contains(number)).
Я все сделал лучше всего протестировать все компоненты по отдельности (

Код: Выделить всё

Contains()
, Any() и Substring()), и кажется, что как только я помещаю contains() внутри Any(), происходит сбой .
Все, что я могу придумать, это сохранить первую строку блока while и переместить логику второй строки из запроса LINQ в дополнительный цикл для фильтрации моих результатов. Другими словами:
  • Используйте LINQ для получения данных, удовлетворяющих условиям ^[0-9]+
  • Отфильтруйте с помощью цикла for или какой-либо другой параметр, чтобы убедиться, что ^[0-9]+[^0-9]*$ выполнено
Я хотел бы избежать дополнительного цикла, если это возможно. На этом этапе я застрял. Есть ли у кого-нибудь предложения по другим способам решения этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/788 ... base-query
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»