LINQ - свойство массива содержит элемент из другого массива - PullRequest
12 голосов
/ 29 марта 2010

У меня есть объект (продукт) со свойством типа 'массив'
например product.tags = {"tag1", "tag2", "tag9"}

У меня есть массив входных тегов для фильтрации.

... но это не совсем работает:

List<string> filterTags = new List<string>() { "tag1", "tag3" };

var matches = from p in products
  where p.Tags.Contains(filterTags)
  select p;

Есть какие-нибудь рекомендации? Спасибо.

1 Ответ

26 голосов
/ 29 марта 2010

Чего на самом деле должен достичь Contains? Все ли элементы в Tags должны существовать в filterTags? Или хотя бы один из них? Для последнего используйте Any и для первого используйте All. Ваша строка where изменится на:

where p.Tags.Any(tag => filterTags.Contains(tag))

или

where p.Tags.All(tag => filterTags.Contains(tag))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...