首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按列表过滤子集合

按列表过滤子集合
EN

Stack Overflow用户
提问于 2013-06-19 02:41:47
回答 1查看 81关注 0票数 1

我遇到了一些按列表过滤子集合的问题

我的数据模型如下;

代码语言:javascript
复制
  class Catalog
  {
      public int ID { get;set;}
      public string Name { get;set;}
      public IList<Area> Areas { get;set;}
  }

  class Area
  {
      public int ID { get;set;}
      public string Name { get;set;}
  }

假设我有以下数据:

代码语言:javascript
复制
       List<Catalog> dataSource;
       List<Area> filter;

我想通过过滤器来过滤数据源,例如

代码语言:javascript
复制
    from v in dataSource where v.Areas.Contains(filter) select v

但这并不管用。

相反,我可以这样做

代码语言:javascript
复制
      List<Catalog> result = new List<Catalog>;
      foreach (Area area in filter)
      {
                result.AddRange((from v in dataSource where v.Areas.Contains(area) select v).ToList());
       }

但这并不是最优的。

谁能告诉我如何按列表过滤子集合

EN

回答 1

Stack Overflow用户

发布于 2013-06-19 02:44:32

试试这个:

代码语言:javascript
复制
from v in dataSource where v.Areas.Intersect(filter).Any() select v;

这之所以有效,是因为Intersect会返回两个列表的共同点,如果它们有任何共同点,那么它们就会匹配。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17176433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档