我需要使用Asp.Net Identity找到不含有某個角色的所有用戶。
到目前爲止,我有這樣的事情,但它不工作。Asp.Net標識查找不在角色中的用戶
(From role In context.Roles
From userRoles In role.Users
Join us In context.Users On us.Id Equals userRoles.UserId
Where role.Name <> "SomeRole"
Select us.UserName)
這給我一個所有用戶的列表,但它包括角色「SomeRole」中的用戶。
它看起來我需要一些不在子查詢中的類型?
這是可以工作的SQL代碼,但如果可能的話,我仍然會喜歡LINQ查詢。
select distinct A.UserName from AspNetUsers A
inner join AspNetUserRoles UR on UR.UserId = A.Id
inner join AspNetRoles R on R.Id = UR.RoleId
where not exists(
select AspNetUserRoles UR1 on UR1.UserId = A.Id
inner join AspNetRoles R1 on R1.Id = UR1.RoleId
where R1.Name = 'SomeRole')
那麼我有一個工作解決方案,但它並不漂亮,我相信它可以寫得更好。
(From role In context.Roles
From userRole In role.Users
Join user In context.Users On us.Id Equals userRole.UserId
Where Not (
From role1 In context.Roles
From userRole1 In role1.Users
Join user1 In context.Users On user1.Id Equals userRoles1.UserId
Where role1.Name = "SomeRole"
Select user1.Id).Contains(user.Id)
Select user.UserName).Distinct()
對不起上面的代碼是在VB,但在C#是=我沒有標記的文章!作爲VB或C#。 – goroth