1

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

我的数据模型如下;

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

假设我有以下数据:

       List<Catalog> dataSource;
       List<Area> filter;

我想通过过滤器过滤数据源,比如

    from v in dataSource where v.Areas.Contains(filter) select v

但这不起作用。

相反,我可以这样做

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

但这不是最优的。

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

4

1 回答 1

0

尝试这个:

from v in dataSource where v.Areas.Intersect(filter).Any() select v;

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

于 2013-06-18T18:44:31.513 回答