获取用户及其角色的列表

时间:2013-01-09 07:17:40

标签: asp.net asp.net-mvc asp.net-membership

我正在使用会员提供商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));
    }

非常低效。我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:1)

过去我在使用标准成员资格提供程序时有些作弊,并且直接针对sql中的表编写了大量复杂查询。您正在寻找的是一个简单的联接。

答案 1 :(得分: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));
    }