Как извлечь элементы из списка <T>, где одно свойство содержит в точности слова из другого списка? - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь получить только элементы из List<T>, где одно из свойств содержит слова из другого списка.

Как только это сработает, я буду использовать код в моей реальной базе данных, но в основном то, что я хочу сделать.

List<string> WordsList = new List<string>();

WordsList.Add("THIS");
WordsList.Add("CAT");

List<Sentence> SentencesList = new List<Sentence>();

SentencesList.Add(new Sentence { Description = "THIS SENTENCE CONTAINS THE WORD DOG" });
SentencesList.Add(new Sentence { Description = "THIS SENTENCE CONTAINS THE WORD CAT" });
SentencesList.Add(new Sentence { Description = "THIS SENTENCE CONTAINS THE WORD DOG AND THE WORD CAT" });
SentencesList.Add(new Sentence { Description = "THIS SENTENCE CONTAINS NEITHER" });

Теперь я хочу получить из списка SentencesList элементы, содержащие только слова "THIS" и "CAT "

var records = SentencesList.Where(x => WordsList.Any(y => x.Description.Contains(y))).ToList();

Приведенный выше фрагмент кода извлекает все элементы, поскольку они содержат "THIS" или "CAT"

1 Ответ

0 голосов
/ 26 апреля 2018

Если вы хотите изменить или на и логику, все, что вам нужно сделать, это изменить WordsList.Any на WordsList.All условие:

 var records = SentencesList
   .Where(x => WordsList.All(y => x.Description.Contains(y)))
   .ToList(); 

Теперь мы хотим, чтобы все слова в WordsList были в x

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