2016-03-29 12 views
2

Ben AspNetRoles rol adı "Kullanıcı" ile tüm kullanıcıları listelemek istiyorum buTüm kullanıcıları bir rol dahilinde alın. ASP.NET Kimlik

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

gibi bir rol bulabilirsiniz bu

var users = UserManager.Users.ToList(); 

gibi tüm kullanıcıları alabilirsiniz tablosu (User ve Admin var).

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); 

ben var role rol almak ama hata ayıklama zaman userInRole bana Count = 0 verir. Derleme hatası yok.

cevap

0

Navigasyon özelliklerini kullanmayı denediniz mi Lazy Loading?

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

Hata "modeli sözlüğe geçirilen öğe 'System.Collections.Generic.List'1 [Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole]' türünde 'dir, ancak bu sözlük' System.Collections.Generic.IEnumerable'1 türünde bir model öğesi gerektirir. [dignità na.Models.ApplicationUser]'." – Anders

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

tüm kullanıcılar arama ve belirli bir rol kimliği uyacak olanları döndürür

+0

Lütfen cevabınızı kelimelerinizle de açıklayın –

+0

Bitti. Gerçekten mi. Oldukça kendi açıklayıcı – Eminem

+0

Bu yardımcı olduysa lütfen cevap olarak seçin – Eminem

0

aşağıdaki gibi Linq ifade taban sorgusu kullanabilirsiniz:

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(); 
İlgili konular