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
我需要按角色获取用户
答案 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?
答案 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