Linq 筛选包含其他列表的列表
我有一个过滤器名称列表:FILTERBYNAMES 我的查询结果项每个都包含一个名称列表:名称 我希望筛选结果,并获取名称列表中至少包含一个名称的所有项目:Linq 筛选包含其他列表的列表,linq,Linq,我有一个过滤器名称列表:FILTERBYNAMES 我的查询结果项每个都包含一个名称列表:名称 我希望筛选结果,并获取名称列表中至少包含一个名称的所有项目: results= result.where(r=>r.NAMES.CONTAINS(...?)...? 我想你需要这样的东西: var results = list.Where(i => i.Names .Any(name => filterNameLi
results= result.where(r=>r.NAMES.CONTAINS(...?)...?
我想你需要这样的东西:
var results = list.Where(i => i.Names
.Any(name => filterNameList.Contains(name)));
我想你需要这样的东西:
var results = list.Where(i => i.Names
.Any(name => filterNameList.Contains(name)));
您可以通过查看两个名称集的交集来解决此问题
var filteredResult = result.Where(i => i.Names.Intersect(filter).Any());
您可以通过查看两个名称集的交集来解决此问题
var filteredResult = result.Where(i => i.Names.Intersect(filter).Any());
要限制筛选器的枚举数,可以使用哈希集
HashSet<string> hashedFilter = new HashSet<string>(filterByNames);
var results = result
.Where(x => x.Names
.Any(name => hashedFilter.Contains(name))
);
HashSet hashedFilter=新的HashSet(filterByNames);
var结果=结果
.其中(x=>x.名称
.Any(name=>hashedFilter.Contains(name))
);
要限制筛选器的枚举,可以使用哈希集
HashSet<string> hashedFilter = new HashSet<string>(filterByNames);
var results = result
.Where(x => x.Names
.Any(name => hashedFilter.Contains(name))
);
HashSet hashedFilter=新的HashSet(filterByNames);
var结果=结果
.其中(x=>x.名称
.Any(name=>hashedFilter.Contains(name))
);