linq where子句不在select语句中

时间:2009-08-21 20:12:25

标签: linq where-clause in-function

有人可以帮我从SQL Query转换为LINQ VB.NET:

select rls.* from Roles rls(nolock)
where rls.id not in (
select r.ID from usersRole ur (nolock)
inner join Roles r(nolock) on ur.RoleID = r.ID
where user_id = 'NY1772')

由于

2 个答案:

答案 0 :(得分:2)

我找到了自己的答案......

     'construct a where ID list
     Dim lstRoleIDs = From ur In ctx.UsersRoles _
                      Join rl In ctx.Roles _
                      On ur.RoleID Equals rl.ID _
                      Where ur.User_ID = UserId _
                      Select rl.ID

     Dim newQ = (From r In ctx.Roles _
                 Where Not lstRoleIDs.Contains( _
                        r.ID) _
                 Select New UserRoleList With {.ID = r.ID, .PermDesc = r.ID & " - " & r.Permission & " - " & r.PermissionDescription})

答案 1 :(得分:0)

如果你想保留(NOLOCK)提示,我在C#中使用扩展方法blogged a handy solution。请注意,这与向查询中的每个表添加nolock提示相同。