ロールを一覧表示するドロップダウン リスト ボックスがあります。そのロールを持つユーザーのリストを取得したい。「管理者」ロールまたは「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;
}
助けてください。
更新されたコード (まだエラー)
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.IdentityUser" に設定されている場合、Select メソッドは "IQueryable"、"IEnumerable"、または "Microsoft.AspNet.Identity.EntityFramework.IdentityUser" のいずれかを返す必要があります。
さまざまなキャスティングを試しましたが、どれも役に立ちませんでした。
更新 (実用的なソリューション)
chris544 のおかげで、彼のアイデアはこれを修正するのに役立ちました。これが作業方法です: -
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;
}