如何使用LINQ只选择相关表中是否存在结果?

时间:2011-12-13 23:13:13

标签: c# asp.net linq

我有桌子: aspnet_UsersInRoles aspnet_Role aspnet_Users ApiUsers

我想只选择具有“ProductOwner”角色并且当前在ApiUsers中没有条目的用户。我现在使用hasMany表的原因是架构可能会改变,这使得调整变得容易。这是我目前的查询:

    ddNewApiUserParentUser.DataSource = from u in dbc.aspnet_UsersInRoles
                                        where u.aspnet_Role.RoleName == "ProductOwner"
                                        select new { u.aspnet_User.UserId, u.aspnet_User.UserName };

这会让所有具有ProductOwner角色的用户获得它们,如果ApiUser中至少有一行。 所有外键都通过UserId连接。如果他们的角色名称为ProductOwner,如果他们在ApiUser中有0个计数(通过UserId的关系),我怎么才能得到他们?

非常感谢, 达伦

1 个答案:

答案 0 :(得分:1)

我想你想要这样的东西:

ddNewApiUserParentUser.DataSource = 
    from u in dbc.aspnet_UsersInRoles
    where u.aspnet_Role.RoleName == "ProductOwner" &&
        !u.aspnet_User.ApiUsers.Any()
    select new { u.aspnet_User.UserId, u.aspnet_User.UserName };