2012-06-28 60 views
7

Có hai danh sách:Loại trừ mục danh sách có chứa các giá trị từ một danh sách khác

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

Làm thế nào tôi có thể lọc ra các giá trị từ các "dữ liệu" danh sách có chứa từ khóa bất kỳ trong danh sách "loại trừ"?

+1

Như abatishchev nói, làm cho 'loại trừ' một' HashSet ', đặc biệt nếu nó lớn. – Jodrell

+0

Cảm ơn. Nếu chúng tôi đang ở HashSets, tôi sẽ cung cấp cho liên kết này để một bộ gõ xung quanh chủ đề này: http://stackoverflow.com/questions/1247442/when-should-i-use-the-hashsett-type – lekso

Trả lời

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

Hãy thử:

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

này cũng hoạt động khi danh sách loại trừ trống.

Các vấn đề liên quan