public List <UserLiteDto> GetStudyConsultantLeader(int userId) { var engine = PermissionDb.CreateEngine(); var depId = engine.Esmart_Sys_Department_User.Where(n => n.UserId == userId).Select(n => n.DeparentId).FirstOrDefault(); //所给用户不属于任何部门 if (depId < 1) { return(new List <UserLiteDto>(0)); } var query = from userRole in engine.Esmart_Sys_User_Roles join role in engine.Esmart_Sys_Roles on userRole.RoleId equals role.RoleId where userRole.UserId == userId && role.RoleName == BuiltinRoles.StudyConsultantAdmin select userRole.UserId; //所给用户不是学习顾问 if (!query.Any()) { return(new List <UserLiteDto>(0)); } //获取所有的上级部门 var parentDepartmentIds = DepartmentDbAction.GetParentDepartments(userId).Select(n => n.DeparentId).ToList(); var query2 = from user in engine.Esmart_Sys_Users join depUser in engine.Esmart_Sys_Department_User on user.UserID equals depUser.UserId join userRole in engine.Esmart_Sys_User_Roles on user.UserID equals userRole.UserId join role in engine.Esmart_Sys_Roles on userRole.RoleId equals role.RoleId where user.IsDelete != 1 && user.Isleave != 1 //本组学习顾问组长或值班组长、上级部门的学习顾问主管、学习顾问经理 && ((depUser.DeparentId == depId && (role.RoleName == BuiltinRoles.StudyConsultantAdmin || role.RoleName == BuiltinRoles.StudyConsultantAdmin)) || (parentDepartmentIds.Contains(depId) && role.RoleName == BuiltinRoles.StudyConsultantAdmin) || role.RoleName == BuiltinRoles.StudyConsultantAdmin) select new UserLiteDto { UserID = user.UserID, Ename = user.Ename, TrueName = user.TrueName, WorkNo = user.WorkNo }; return(query2.Distinct().ToList()); }