2012-06-28 12 views
7

Hay dos listas:Excluir elementos de la lista que contienen valores de otra lista

List<string> excluded = new List<string>() { ".pdf", ".jpg" }; 
List<string> dataset = new List<string>() {"valid string", "invalid string.pdf", "invalid string2.jpg","valid string 2.xml" }; 

¿Cómo se filtran de salida los valores de la lista "conjunto de datos" que contienen cualquier palabra clave de la lista "excluidos"?

+1

Como dice abatishchev, make 'excluded' a' HashSet ', especialmente si es grande. – Jodrell

+0

Gracias. Si estamos en HashSets, le daré a este enlace una explicación sobre este tema: http://stackoverflow.com/questions/1247442/when-should-i-use-the-hashsett-type – lekso

Respuesta

14
var results = dataset.Where(i => !excluded.Any(e => i.Contains(e))); 
6

Probar:

var result = from s in dataset 
      from e in excluded 
      where !s.Contains(e) 
      select e; 
0
var result=dataset.Where(x=>!excluded.Exists(y=>x.Contains(y))); 

Esto también funciona cuando la lista está vacía excluidos.

Cuestiones relacionadas