2009-09-27 90 views
1

我有過濾器的名稱列表:FILTERBYNAMES過濾一個列表與另一列表包容

我的查詢結果中的項目都包含一個名稱列表:名字

我要過濾的結果的取名字的所有項目列表包含FILTERNAMELIST至少一個名稱:

results= result.where(r=>r.NAMES.CONTAINS(...?)...? 

回答

5

我想你需要這樣的東西:

var results = list.Where(i => i.Names 
           .Any(name => filterNameList.Contains(name))); 
4

您可以通過查看兩個名稱集的交集來解決此問題。

var filteredResult = result.Where(i => i.Names.Intersect(filter).Any()); 
1

要限制過濾器的枚舉,你可以使用一個HashSet ...

HashSet<string> hashedFilter = new HashSet<string>(filterByNames); 

var results = result 
    .Where(x => x.Names 
    .Any(name => hashedFilter.Contains(name)) 
);