我遇到了一些按列表过滤子集合的问题
我的数据模型如下;
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());
}但这并不是最优的。
谁能告诉我如何按列表过滤子集合
发布于 2013-06-19 02:44:32
试试这个:
from v in dataSource where v.Areas.Intersect(filter).Any() select v;这之所以有效,是因为Intersect会返回两个列表的共同点,如果它们有任何共同点,那么它们就会匹配。
https://stackoverflow.com/questions/17176433
复制相似问题