如何通过角色获得用户

时间:2011-12-01 10:40:09

标签: linq entity-framework

var usersFilterRoles = from u in dataContext.aspnet_Users
join p in dataContext.Partners on u.UserId equals p.Id
where u.aspnet_Roles.Contains(roles)

没有用。 角色 - 我做RoleId或nameRole

我需要按角色获取用户

3 个答案:

答案 0 :(得分:2)

使用Roles.GetUsersInRole方法获取所有用户名如果​​您需要更多信息,请使用Membership.GetAllUsers()Membership获取所有用户,并从返回MembershipUserCollection中检索角色用户使用linq或loop通过MembershipUserCollection并添加到自定义集合;你最喜欢哪种方法。

 MembershipUserCollection users;
  string[] usersInRole;


rolesArray = Roles.GetAllRoles();
users = Membership.GetAllUsers();

检查GetUsersIndRole方法的链接示例以清除逻辑。

预期的Linq查询:

string[] usersInRole = Roles.GetUsersInRole("Role");
var users = DataContext.AspnetUsers.Where(usr => usersInRole.Contains(usr.LoweredUserName));

请按照以下教程和链接使用会员资格 ASP.NET's Membership, Roles, and Profile
How do you manage asp.net SQL membership roles/users in production?

Roles.AddUsersToRole Method

Roles Class - Methods

答案 1 :(得分:0)

为什么不使用System.Web.Security.Roles?

using System.Web.Security;

namespace App.SomeName
{
    public class YourClass 
    {
         public void GetUsers(){
               string[] users = Roles.GetUsersInRole("MyRole"); 
         }
    }

}

这是你想做的吗?

答案 2 :(得分:0)

使用ASP.NET角色和成员资格提供程序是可行的方法,但如果您想在linq中按角色获取用户:

var userRoleQuery = from anu in context.AspNetUsers
                               where anu.AspNetRoles.Any(r => r.Id == roleId)
                               select anu.Id