如何获取链接到管理员的所有组用户列表?

如何获取链接到管理员的所有组用户列表?

问题描述:


例如,我有3组使用以下ID:1,2,3;如何获取链接到管理员的所有组用户列表?

id | name  | 
--------------- 
    1 | group1 | 
    2 | group2 | 
    3 | group3 | 

另外,我有在那些组中的用户:2组1,3组2和在组3 1;

id | user | groupid | 
--------------------- 
    1 | user1 | 1 
    2 | user2 | 1 
    3 | user3 | 2 
    4 | user4 | 2 
    5 | user5 | 2 
    6 | user6 | 3 

当然,我有表admgroups

id | groupid | admid | 
---------------------- 
1 | 1  | 3  | 
2 | 2  | 4  | 
3 | 3  | 3  | 
4 | 2  | 5  | 

所有我想 - 一个列表,其中应包括从组中的所有用户,链接到管理,例如,使用id = 3.所以结果应该是这样的: var list = {"user1", "user2", "user6"}

+0

愿组有多个管理员吗? –

只要把这些线在你的代码:

var list = (from cl in (from adm in admgroups 
       join gr in groups 
        on adm.groupid equals gr.Id 
       where adm.admid==3 
       select new {gr.Id}) 
       join client in users 
       on cl.Id equals client.groupid 
         select new {client.user}).ToList(); 

你可以使用select如下所示。首先,找到与指定管理员相关的groupid。然后,选择用户已经选定groupid

var admin_id = 3; 
var admin_groups = admgroups.Where(x=> x.admid == admin_id).Select(x=> x.groupid).ToList(); 
var result = users.Select(x=> admin_groups.Contains(x.groupid)).ToList();