How do you add dynamic 'where' clauses to a linq query?

后端 未结 6 1081
伪装坚强ぢ
伪装坚强ぢ 2020-12-05 07:19

I\'ve got a User table with a bitmask that contains the user\'s roles. The linq query below returns all the users whose roles include 1, 4 or 16.

var users          


        
6条回答
  •  误落风尘
    2020-12-05 07:43

    How's this? It is not dynamic linq, but accomplishes the goal.

    private List GetUsersFromRoles(uint[] userRoles) 
    {
        List users = new List();
    
        foreach(uint userRole in UserRoles)
        {
            List usersInRole = GetUsersFromRole(userRole);
            foreach(User user in usersInRole )
            {
                users.Add(user);
            }
        }
        return users;
    }    
    
    private List GetUsersFromRole(uint userRole) 
    {
        var users = from u in dc.Users
                where ((u.UserRolesBitmask & UserRole) == UserRole)
                select u;
    
        return users;    
    }
    

提交回复
热议问题