Запрос Linq из источника данных, где ... например, "%%" или ... как "%%" - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь выбрать все поля из БД, которая содержит любую строку, содержащуюся в списке (которая может быть заполнена пользователем).Для меня это очень просто сделать с помощью чистого SQL с таким предложением, как

WHERE myfield LIKE '%nam%' OR myfield LIKE '%cod%' OR myfield LIKE '%big%'

, но мне нужно сделать это с C # и Linq.Я искал несколько решений, некоторые из которых рекомендуют мне использовать .Any или .Contains, но я не понял, как применить к моему делу: - (

) Это самый близкий результат, которого я могу достичь:

var query = DataSource.Docs();

...

IList<string> nameFilter = new List<string>() {"nam", "cod", "big"};                    
query = query.Where(x => x.NomeFile.Contains(nameFilter.FirstOrDefault()));

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

Может ли кто-нибудь помочь мне найти правильный путь?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вы пробовали это? query = query.Where(x => nameFilter.Any(n => x.NomeFile.Contains(n))); или query = query.Where(x => nameFilter.Any(n => x.NomeFile.IndexOf(n) >= 0));

0 голосов
/ 06 июня 2018

Вы ищете:

query.Where(x => nameFilter.Any(s => x.NomeFile.Contains(s)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...