例如,我有3个群组,其中包含以下ID:1
,2
,3
;
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"}
答案 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();