linq select m:n user:groups

时间:2010-05-30 07:05:50

标签: linq linq-to-entities

我有三张桌子:

cp_user (id, name)
cp_group (id, name)
cp_usergroup (user_id, group_id)
  • 经典的m:n东西。

假设以下数据:

cp_user
1, Paul
2, Steven

cp_group
1, Admin
2, Editor

cp_usergroup
1, 1
1, 2
2, 2

所以Paul在Admin AND Editor组中,而Steven就在编辑组中。我想从数据库生成类似的列表:

Paul Admin
Paul Editor
Steven Editor

有什么建议吗?

谢谢! 克莱门

2 个答案:

答案 0 :(得分:2)

我的一位朋友帮我解决了这个问题:

var q = db2.cp_users.SelectMany(
          u => u.cp_groups.Select(
              g => new { Username = u.name, Groupname = g.name }));

对我来说很好。在查询语法中有没有办法做到这一点?

答案 1 :(得分:1)

在查询语法中:

from u in db2.cp_users
from g in u.cp_groups
select new { Username = u.name, GroupName = g.name }