2010-03-29 2 views
8

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

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

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

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

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

Любые рекомендации? Спасибо.

ответ

19

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

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

или

where p.Tags.All(tag => filterTags.Contains(tag)) 
+0

Спасибо ... большой. На самом деле это означало «любой». .... «... показать все продукты, содержащие один или несколько тегов ввода». Я отдам это. СПАСИБО! – Rob

+0

Как LINQ для всех, кто интересуется: 'context.Products.Where (p => p.Tags.Any (tag => filterTags.Contains (tag)))' –

Смежные вопросы