使用另一个列表包含过滤列表

时间:2009-09-27 21:39:18

标签: linq

我有一个过滤器名称列表:FILTERBYNAMES

我的查询结果项每个都包含一个名单:NAMES

我想过滤结果,取名列表中包含FILTERNAMELIST中至少一个名字的所有项目:

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

3 个答案:

答案 0 :(得分:5)

我认为你需要这样的东西:

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

答案 1 :(得分:4)

您可以通过查看两个名称集的交集来解决此问题。

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

答案 2 :(得分:1)

要限制过滤器的枚举,可以使用哈希集...

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

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