簡體   English   中英

如何獲得角色列表和其中的用戶數asp.net mvc

[英]How do I get the List of Role and Number of users in them asp.net mvc

請問我如何獲得角色列表以及擁有該角色的用戶數量? 像這樣的東西 在此處輸入圖片說明

我已經試過了

var users = allusers.Where(x => x.Roles.Select(role => role.Name).Contains(“ User”))。count;

但這只是一個角色。 我需要所有角色,並且在數據庫中添加新角色時,它也應添加到列表中。

謝謝

以下代碼將對您有所幫助。

var  result = ( from r in userManager.UserRoles 
                join u in userManager.Users on r.UserId equals u.Id
                group  new { r, u } by new { r.RoleId } into grp
                select new { name = grp.FirstOrDefault().r.Name, count=grp.Count()}).ToList();

我知道這個問題已有一年多的歷史了,但這是ASP Core 2.2中的更新。
這段代碼在PageModel上運行,事情變得越來越簡單:)

//Creation of class
public class RolesModel : PageModel
{
    private readonly UserManager<IdentityUser> _userManager;
    private readonly RoleManager<IdentityRole> _roleManager;
    private readonly ILogger<RolesModel> _logger;

    public RolesModel(
        UserManager<IdentityUser> userManager,
        RoleManager<IdentityRole> roleManager,
        ILogger<RolesModel> logger)
    {
        _userManager = userManager;
        _roleManager = roleManager;
        _logger = logger;
    }

//(...)
//Now check in some class 

public async Task<IActionResult> OnGetAsync()
{
    var RolesList = _roleManager.Roles.OrderBy(x => x.Name).ToList();

    foreach (var role in RolesList)
    {
        var RolesUserlist = await _userManager.GetUsersInRoleAsync(role.Name);
        _logger.LogInformation($"Role {role.Name} has {RolesUserlist.Count} users");    
    }
}

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM