Использование LINQ Contains - Как убедиться, что определенный символ не следует - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть следующее linq:

var s = string.Join(",", products.Where(p => p.Query.Contains(tableName))
                                 .Select(p => p.ProductId.ToString()));

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

Например, если я ищу строку для таблицы table1, она не должна включать table10

.в данные запроса будут включены следующие данные:

ВКЛЮЧИТЬ:

this is a test table1 found
This is another test table1(some other data here)
thistable1shouldbeincluded

НЕ ВКЛЮЧАТЬ

this is a text table10 found
table10is here
testing this should not be included table18(testing)

По сути, проверка заключается в том, чтобы убедиться, что цифра 0-9 не соответствует критериям поиска в операторе содержимого.Все остальное может следовать.Я хотел бы сохранить его частью того же linq и как простой, если это возможно.Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 27 февраля 2019

Попробуйте Regex: table1(?!\d)

Демо

var s = string.Join(",", products.Where(p => Regex.IsMatch(p.Query, $@"{tableName}(?!\d)"))
                                 .Select(p => p.ProductId.ToString()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...