2013-01-09 83 views
5

我正在使用会员提供商asp.net mvc 4. 我想获取用户及其角色的列表,而不需要Roles.GetRolesForUser()为每个用户。获取用户及其角色列表

在我的应用程序中,业务需求规定用户只能分配一个角色。

目前我在做什么:

[GridAction] 
    public ActionResult _GetUsers() 
    { 
     var users = Membership.GetAllUsers().Cast<MembershipUser>().Select(n => new AdminAccountEditModel 
     { 
      Role = Roles.GetRolesForUser(n.UserName).FirstOrDefault(), 
      IsApproved = n.IsApproved, 
      Email = n.Email, 
      UserName = n.UserName 
     }).ToList(); 

     return View(new GridModel(users)); 
    } 

非常低效的。我该如何解决?

谢谢。

回答

0

我刚结束了使用EF和LINQ来获得结果。

[GridAction] 
    public ActionResult _GetUsers() 
    { 

     var users = from user in xcsnEntities.Users 
        select new 
        { 
         Role = user.Roles.FirstOrDefault().RoleName, 
         IsApproved = user.Membership.IsApproved, 
         Email = user.Membership.Email, 
         UserName = user.UserName 
        }; 

     return View(new GridModel(users)); 
    } 
1

在过去,我在使用标准成员资格提供程序时有点欺骗,并且直接针对sql中的表编写了很多复杂的查询。你要找的是一个简单的连接。