我有逗号分隔的列表,如下所示:
string roleSearch = "Admin,Buyer,Broker";
我有List<Contacts>
看起来像这样:
ContactID Roles
----------------------------
1 "Buyer,Partner"
2 "Broker"
3 "Admin,Buyer,Partner"
我正在尝试在Linq中编写一个查询,该查询将List<Contacts>
优化为roleSearch
中包含任何角色的项目。所以给出:
roleSearch = "Admin,Buyer"
我想要Roles
包含的任何记录&#34;管理员&#34;或&#34;买方&#34;。两者都没有必要。如果是&#34; Admin&#34;或&#34;买方&#34;存在,然后它是积极的。
使用this post,我接近了:
string[] inRoles = roleSearch .Split(',');
results = results.Where(r => inRoles.Contains(r.Roles));
但事实并非如此,因为它只会返回inRoles
中每个项目完全匹配的记录。意思是,它只返回具有单个角色的记录。 Roles
类似于&#34;管理员,合作伙伴&#34;会被忽略。
我试过了:
string[] inRoles = roleSearch.Split(',');
results = results.Where(r => inRoles.Contains(r.Roles.Split(',')));
但那不起作用。
P.S。我不能指望任何顺序的角色。但是,好消息,潜在角色列表非常小。最多五次
答案 0 :(得分:2)
试试这段代码:
var test = results.Where(x => x.Roles.Split(',').Intersect(inRoles).Any()).ToList();
我正在使用Intersect扩展方法来生成两个序列的集合交集。