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

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

谢谢。

4

2 回答 2

1

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

于 2013-01-09T09:34:01.280 回答
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));
    }
于 2013-01-10T00:10:03.990 回答