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

时间:2017-11-11 18:00:40

标签: c# linq

例如,我有3个群组,其中包含以下ID:123;

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

此外,我有这些群组中的用户:群组1中有2位,群组2中有3位,群组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     |

我想要的所有内容 - 一个列表应该包含来自组的所有用户,这些用户链接到admin,例如,id = 3.所以结果应该是: var list = {"user1", "user2", "user6"}

2 个答案:

答案 0 :(得分:1)

你可以使用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();

答案 1 :(得分:1)

将这些行放在代码中:

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();