c# - ASP.NET 标识 : get all users in a role

标签 c# asp.net asp.net-mvc-5 asp.net-identity

如何获取角色中所有用户的列表?之前使用 Roles.GetUsersInRole 是可能的,但是使用新身份我找不到这样的东西。

最佳答案

我没有看到内置的方法,但它很容易实现。我在特定于应用程序的 UserManager 中有此方法:

public IQueryable<User> GetUsersInRole(string roleName)
{
    return from user in Users
           where user.Roles.Any(r => r.Role.Name == roleName)
           select user;
}

它输出的SQL看起来很合理:

SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[Email] AS [Email], 
[Extent1].[EmailConfirmed] AS [EmailConfirmed], 
[Extent1].[PasswordHash] AS [PasswordHash], 
[Extent1].[SecurityStamp] AS [SecurityStamp], 
[Extent1].[PhoneNumber] AS [PhoneNumber], 
[Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
[Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled], 
[Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
[Extent1].[LockoutEnabled] AS [LockoutEnabled], 
[Extent1].[AccessFailedCount] AS [AccessFailedCount], 
[Extent1].[UserName] AS [UserName]
FROM [dbo].[AspNetUsers] AS [Extent1]
WHERE  EXISTS (SELECT 
    1 AS [C1]
    FROM  [dbo].[AspNetUserRoles] AS [Extent2]
    INNER JOIN [dbo].[AspNetRoles] AS [Extent3] ON [Extent2].[RoleId] = [Extent3].[Id]
    WHERE ([Extent1].[Id] = [Extent2].[UserId]) AND ([Extent3].[Name] = @p__linq__0)
)

关于c# - ASP.NET 标识 : get all users in a role,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19490388/

相关文章:

c# - OPOS Configuration.xml DevicePath 属性

c# - 如何处理套接字异常

c# - 使用 Html Agility Pack 从 html 中抓取所有文本

c# - GetOwinContext 在 ASP.NET Core 中不起作用

c# - 如何从 C# 中的中继器中查找 td?

c# - 为什么 file.PostedFile 总是 null

c# - 如何重写泛型方法?(C#)

c# - 将隐藏字段中的 int 列表绑定(bind)到 MVC c# 中模型的属性?

c# - Unity 3 Configuration By Convention 在 Web 项目中找不到类型

c# - GenerateEmailConfirmationTokenAsync 默认过期时间跨度