3 つのロールを追加しました。
- 管理者
- スタッフ
- 登録済み
ここで、すべてのユーザーのリストを表示したいと思いRegistered
ます。私は次のようなことをしようとしているので、IDシステムを取得していないのではないかと心配しています:
ネタバレ注意: 動作しないコード
var listOfNames = _unitOfWork.UserRepository.All()
.Where(u => u.Roles.Contains("Registered"))
.ToList();
これは明らかにうまくいかないので、答えを探しに行きました。残念ながら、私は何も得られませんでした。私が見つけた最も近いIUserRoleStore
ものは、次の実装があると述べた Scott Allen による投稿でした。
- ユーザーを役割に追加する
- ユーザーのすべてのロールを取得する
- ユーザーが特定のロールに属していることを確認します
- ロールからユーザーを削除する
しかし、それでも、それを取得していません:/
この Questionのメソッドも試しましたがRoles.Select(r => r.Name).Contains("client")
、 Name プロパティが見つからないため機能しませんか?
この ApplicationUser オブジェクトのリストを取得するにはどうすればよいですか?
アップデート
ショーンの答えは、もう少し深く掘り下げるのに役立ちました。これが最善の方法かどうかはわかりませんが、私のニーズには合っています。
var users = context.Users;
var roleUsers = context.Roles.Single(one => one.Name == "Registered").Users;
names = (from r in roleUsers
join u in users on r.UserId equals u.Id
select u.UserName).ToList();
これが非効率的である場合は、その理由と改善方法を教えてください。