2010-03-29 19 views
8

Tengo un objeto (producto), con una propiedad de tipo 'matriz'
p. product.tags = {"tag1", "tag2", "tag9"}LINQ - la propiedad de matriz contiene elementos de otra matriz

Tengo una matriz de etiquetas de entrada para filtrar.

... pero esto no es del todo de trabajo:

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

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

¿Alguna recomendación? Gracias.

Respuesta

19

¿Qué significa realmente el Contains? ¿Es necesario que todos los artículos en Tags existan en filterTags? ¿O al menos, uno de ellos? Para el último uso Any y para el uso anterior All. Su línea where cambiaría a:

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

o

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

... Gracias grande. Significaba "cualquiera" en realidad. .... "... muestra todos los productos que contienen una o más etiquetas de entrada". Voy a dar una oportunidad. ¡GRACIAS! – Rob

+0

Como LINQ para cualquier persona interesada: 'context.Products.Where (p => p.Tags.Any (tag => filterTags.Contains (tag)))' –

Cuestiones relacionadas