代码之家  ›  专栏  ›  技术社区  ›  zsharp

筛选包含其他列表的列表

  •  1
  • zsharp  · 技术社区  · 15 年前

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

    我的查询结果项每个都包含一个名称列表:名称

    我希望筛选结果,并获取名称列表中至少包含一个名称的所有项目:

       results= result.where(r=>r.NAMES.CONTAINS(...?)...?
    
    3 回复  |  直到 15 年前
        1
  •  5
  •   Mehrdad Afshari    15 年前

    我想你需要这样的东西:

    var results = list.Where(i => i.Names
                                   .Any(name => filterNameList.Contains(name)));
    
        2
  •  4
  •   Daniel Brückner Pradip    15 年前

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

    var filteredResult = result.Where(i => i.Names.Intersect(filter).Any());
    
        3
  •  1
  •   Amy B    15 年前

    HashSet<string> hashedFilter = new HashSet<string>(filterByNames);
    
    var results = result
      .Where(x => x.Names
        .Any(name => hashedFilter.Contains(name))
      );