我想执行一个“GetUsersInRoles”,即我要查找所有MembershipUser在一组角色中至少具有一个角色,但是我似乎无法对此负责。

我有 GetUsersInRole、Membership.GetAllUsers()、Linq,...但是如何?

非常感谢任何反馈

汤米

最佳答案

这是一个 Linq 版本,它返回一个 MembershipUserCollection 就像类似的 Membership 方法( FindUsersByEmailFindUsersByName )。它不是很漂亮,因为它依赖于 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/

10-10 18:16