我有一个过滤器名称列表:FILTERBYNAMES
我的查询结果项每个都包含一个名单:NAMES
我想过滤结果,取名列表中包含FILTERNAMELIST中至少一个名字的所有项目:
results= result.where(r=>r.NAMES.CONTAINS(...?)...?
答案 0 :(得分:5)
我认为你需要这样的东西:
var results = list.Where(i => i.Names
.Any(name => filterNameList.Contains(name)));
答案 1 :(得分:4)
您可以通过查看两个名称集的交集来解决此问题。
var filteredResult = result.Where(i => i.Names.Intersect(filter).Any());
答案 2 :(得分:1)
要限制过滤器的枚举,可以使用哈希集...
HashSet<string> hashedFilter = new HashSet<string>(filterByNames);
var results = result
.Where(x => x.Names
.Any(name => hashedFilter.Contains(name))
);