2016-03-29 5 views
2

私はAspNetRolesにおける役割名「ユーザー」を持つすべてのユーザーを一覧表示したいこのロール内のすべてのユーザーを取得します。 ASP.NETアイデンティティは

var role = db.Roles.SingleOrDefault(m => m.Name == "User"); 

のような役割を見つけることができます。この

var users = UserManager.Users.ToList(); 

のようにすべてのユーザーを取得することができますテーブル(私はUserAdminです)。

var role = db.Roles.SingleOrDefault(m => m.Name == "User"); 
var usersInRole = db.Users.Where(m => m.Roles.Any(r => r.RoleId == role.Id)).ToList(); 

return View(usersInRole); 

私はvar roleにおける役割を取得するが、私はデバッグするときuserInRoleは私をCount = 0与えます。コンパイルエラーはありません。

答えて

0

ナビゲーションプロパティを使用しようとしましたか?

var role = db.Roles.SingleOrDefault(m => m.Name == "User"); 
var usersInRole = role.Users; 
+0

エラー「モデル辞書に渡される項目は 'System.Collections.Generic.List'1型[Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole]'ですが、この辞書には 'System.Collections.Generic.IEnumerable'1というモデル項目が必要です[Dignita na.Models.ApplicationUser] '。 " – Anders

2
var usersInRole = db.Users.Where(m => m.Roles.RoleId == role.Id)).ToList(); 

あなたはすべてのユーザーを検索し、特定のロールIDに合うものを返す

+0

あなたの答えを言葉でも説明してください。 –

+0

完了。本当に。それはむしろ自明である – Eminem

+0

助けがあれば回答として選択してください – Eminem

0

あなたは以下のようにLINQの式ベースのクエリを使用することができます。

var roleUserIdsQuery=from role in db.Roles 
       where role.Name=="User" 
       from user in role.Users 
       select user.UserId; 
var users=db.Users.Where(u=>roleUserIdsQuery.Contains(u.Id)).ToList(); 
関連する問題