Asp.net 获取用户及其角色的列表

Asp.net 获取用户及其角色的列表,asp.net,asp.net-mvc,asp.net-membership,Asp.net,Asp.net Mvc,Asp.net Membership,我正在使用会员资格提供商asp.NETMVC4。 我想为每个用户获取一个用户及其角色列表,其中不包含roles.GetRolesForUser() 在我的应用程序中,业务需求声明用户将只被分配一个角色 我目前正在做的事情: [GridAction] public ActionResult _GetUsers() { var users = Membership.GetAllUsers().Cast<MembershipUser>().Selec

我正在使用会员资格提供商asp.NETMVC4。 我想为每个用户获取一个用户及其角色列表,其中不包含
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));
    }
[GridAction]
公共行动结果_GetUsers()
{
var users=Membership.GetAllUsers().Cast().Select(n=>new AdminAccountEditModel
{
Role=Roles.GetRolesForUser(n.UserName).FirstOrDefault(),
我被批准了,
电子邮件,
UserName=n.UserName
}).ToList();
返回视图(新GridModel(用户));
}
效率很低。我该如何解决这个问题


谢谢。

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

我只是使用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));
    }