我有通过列表过滤子集合的som问题
我的数据模型如下;
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());
}
但那不是最佳的。
任何人都可以告诉我如何通过列表过滤子集合
答案 0 :(得分:0)
试试这个:
from v in dataSource where v.Areas.Intersect(filter).Any() select v;
这是有效的,因为Intersect
会返回两个列表的共同点,如果它们有共同点,那么它们就会匹配。