L2E多对多查询

时间:2010-04-15 13:23:46

标签: c# linq entity-framework linq-to-entities

我有四张桌子:

Users                  PrivilegeGroups        rdPrivileges        LinkPrivilege
-----------            ----------------       ---------------     ---------------
userId(pk)             privilegeGroupId(pk)   privilegeId(pk)     privilegeId(pk, fk)
privilegeGroupId(fk)   name                   code                privilegeGroupId(pk, fk)

L2E不会为我创建LinkPrivilege实体。因此,我们只有UsersPrivilegeGroupsrdPrivileges个实体。 PrivilegeGroupsrdPrivileges有许多关系。

我需要做的是根据传入的userId从code表中检索所有rdPrivileges。我该怎么办?

EDIT

对juharr表示赞同,工作代码:

var codes = from u in db.Users
          from pg in db.PrivilegeGroups
          from p in pg.rdPrivileges
          where u.UserId == passedInUserId
             && u.PrivilegeGroups.PrivilegeGroupId == pg.PrivilegeGroupId
          select p.Code;

1 个答案:

答案 0 :(得分:3)

我认为这样的事情会起作用。

var codes = from u in Users
            from pg in u.PrivilegeGroups
            from p in pg.rdPrivileges
            where u.userId == "SomeUserID"
            select p.code;