我有一个下拉列表框,其中列出了角色.我想获得拥有该角色的用户列表.我指的是"管理员"或"CanEdit"角色的用户列表.这是我的代码:

public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> 
  GetRolesToUsers([Control] string ddlRole)
{    
  //ddlRole returns role Id, based on this Id I want to list users

  var _db = new ApplicationDbContext();
  IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;

  if (ddlRole != null)
  {
    //query = query.Where(e => e.Claims == ddlRole.Value);  ???????              
  }

  return query;
}

请帮帮忙.

Updated Code (still error)

public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{

  var roleManager = 
   new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
  var users = roleManager.FindByName("Administrator").Users.ToList();
  return users;
}

错误:当ItemType设置为"Microsoft.AspNet.Identity.EntityFramework.IdentityYUser"时,Select方法必须返回"IQueryable"或"IEnumerable"或"Microsoft.AspNet.Identity.EntityFramework.IdentityYUser"之一.

我试过各种铸件,但都没用.

UPDATE (working solution)

多亏了克里斯544,他的 idea 帮助我解决了这个问题.以下是工作方法:-

public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
  var context = new ApplicationDbContext();
  var users =
    context.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(ddlRole)).ToList();

  return users;
}

推荐答案

不是专家,但是...

在身份中似乎没有内置的趣味性,我也不能从内置的角色中让它工作(它似乎不适用于基于身份的声明).

所以我最终做了这样的事情:

var users = context.Users        
    .Where(x => x.Roles.Select(y => y.Id).Contains(roleId))
    .ToList();
  • x.Roles.Select(y => y.Id)获取user x的所有角色ID的列表
  • .Contains(roleId)判断此ID列表是否包含必要的roleId

Asp.net相关问答推荐

在 AppConfig.json 中存储对象的最佳方式

有条件地在 Gridview 中隐藏 CommandField 或 ButtonField

Window.Open 使用 PDF 流而不是 PDF 位置

加载特定 UpdatePanel 后如何调用客户端 javascript 函数

如何在没有实体框架的情况下使用 ASP.NET Identity 3.0

返回值使用 String result=Command.ExecuteScalar() 结果返回 null 时发生错误

如何在 ASP.NET Web API 中使用非线程安全的 async/await API 和模式?

使用 NancyFx 的好处?

解析器错误消息:无法加载类型网络营销

如何获取当前登录用户的角色列表

由 UpdatePanel 内 GridView 内的 LinkBut​​ton 触发的完整回发

为什么混合 Razor Pages 和 VueJs 是一件坏事?

ASP.NET MVC 路由的无限 URL 参数

ASP.Net 无法创建/卷影复制

使用 Twitter Bootstrap 在 @html.actionlink 中显示 html

StyleBundle 索引超出了数组的范围

IIS 是否执行非法字符替换?如果是这样,如何阻止它?

DateTime.Parse 和 Convert.ToDateTime 之间有什么区别?

在.net的内存数据库中

如何加密 web.config 中的一项