2015-02-24 92 views
0

我用下面的代码LINQ的匹配字符串列表和字符串值

string userList = string.Join(",", db.UserRole.Where(p => p.FirmUserID == 1).Select(p => p.RoleID.ToString())); 

用户列表下方值,

1,12,17,33,76 

我也有下面的字符串列表

List<string> roleList = new List<string>(); 
roleList.add("14"); 
rolelist.add("33"); 
roleList.add("76"); 

哪有我检查userList包含roleList值并在实体框架中获取匹配值?

+1

是否有任何理由将用户列表保留为单个字符串而不是列表?以及为什么你使用字符串来表示看起来像是所有数字的值? – 2015-02-24 14:49:20

+0

不是真的如果你可以建议matcihng的名单我可以申请在我身边感谢帮助和实现 – Beyto 2015-02-24 14:49:58

+0

任何帮助,请@JonSkeet – Beyto 2015-02-24 14:51:53

回答

2

所有,而不是你的用户列表转换为字符串首先把它作为一个List

List<string> userList = db.UserRole.Where(p => p.FirmUserID == 1).Select(p => p.RoleID.ToString()).Tolist(); 

要检查用户列表包括的RoleList

bool doesInclude = !roleList .Except(userList).Any(); 

获得比赛:

List<string> matches = userList.Intersect(roleList).ToList(); 

但是,如果这是你需要完成的任务'更好地工作sith整数类型而不是字符串,因为字符串比较更容易出错(由用户)。

+0

非常感谢你:) – Beyto 2015-02-24 15:38:29

+0

不客气。很高兴帮助。 – user3021830 2015-02-24 15:40:17