Usinq Linq用另一个分隔列表搜索分隔列表

时间:2017-03-18 23:40:36

标签: c# linq

我有逗号分隔的列表,如下所示:

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。我不能指望任何顺序的角色。但是,好消息,潜在角色列表非常小。最多五次

1 个答案:

答案 0 :(得分:2)

试试这段代码:

var test = results.Where(x => x.Roles.Split(',').Intersect(inRoles).Any()).ToList();

我正在使用Intersect扩展方法来生成两个序列的集合交集。