2012-06-28 3 views
7

Есть два списка:Исключить элементы списка, которые содержат значения из другого списка

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" }; 

Как можно отфильтровать значения из списка «Набор данных», которые содержат любое ключевое слово из «исключенных» список?

+1

Как говорит abatishchev, сделайте 'excluded'' 'HashSet ', особенно если он большой. – Jodrell

+0

Спасибо. Если мы находимся в HashSets, я дам эту ссылку на обсуждение этой темы: http://stackoverflow.com/questions/1247442/when-should-i-use-the-hashsett-type – lekso

ответ

6

Try:

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))); 

Это также работает, если он исключен список пуст.

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