我想执行一个“GetUsersInRoles”,即我要查找所有MembershipUser在一组角色中至少具有一个角色,但是我似乎无法对此负责。
我有 GetUsersInRole、Membership.GetAllUsers()、Linq,...但是如何?
非常感谢任何反馈
汤米
最佳答案
这是一个 Linq 版本,它返回一个 MembershipUserCollection
就像类似的 Membership 方法( FindUsersByEmail
, FindUsersByName
)。它不是很漂亮,因为它依赖于 ForEach 副作用:
public static MembershipUserCollection FindUsersByRole(string[] roles)
{
MembershipUserCollection msc = new MembershipUserCollection();
roles.Select(role => Roles.GetUsersInRole(role))
.Aggregate((a, b) => a.Union(b).ToArray())
.Distinct()
.Select( user => Membership.GetUser(user))
.ToList().ForEach( user => msc.Add(user));
return msc;
}
或者,如果 MembershipUser 列表将执行以下操作:
public static List<MembershipUser> FindUsersByRole(string[] roles)
{
var userList = roles.Select(role => Roles.GetUsersInRole(role))
.Aggregate((a, b) => a.Union(b).ToArray())
.Distinct()
.Select( user => Membership.GetUser(user))
.ToList();
return userList;
}
最后,如果您只需要用户名,您可以跳过一个选择:
public static List<string> FindUsersByRole(string[] roles)
{
var userList = roles.Select(role => Roles.GetUsersInRole(role))
.Aggregate((a, b) => a.Union(b).ToArray())
.Distinct()
.ToList();
return userList;
}
关于c# - asp.net c# 成员(member) : how to do a GetUsersInRoles (multiple roles)H,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4580481/