Пример #1
0
        /// <summary>
        /// 根据登录的用户id获取他对应未被禁用的角色字符串
        /// </summary>
        /// <param name="Admin"></param>
        /// <returns></returns>
        public string GetRoleID(string AdminID)
        {
            //根据userID查询中间表数据
            var iquery = r_UserInfo_RoleInfoDAL.LoadEntities(u => u.AdminID == AdminID);
            //获取角色信息的所有数据
            var roleIquery = roleInfoDAL.LoadEntities(u => u.ID > 0);

            //连表-并筛选掉被禁用的角色
            var r_roleIquery = (from a in iquery
                                join b in roleIquery on a.RoleID equals b.RoleID into b_join
                                from c in b_join.DefaultIfEmpty()
                                select new
            {
                AdminID = a.AdminID,
                RoleID = a.RoleID,
                DelFlag = c.DelFlag,
            }).Where(u => u.DelFlag == 0);                    //筛选

            #region 方法2,通过linq的分组获取
            //分组
            var grpiquery = (from a in r_roleIquery
                             group a by new
            {
                a.AdminID                  //根据UserID进行分组
            }).AsEnumerable().Select(p =>
                                     new
            {
                UserID = p.Key.AdminID,
                RoleID = String.Join(",", p.Select(x => x.RoleID).ToArray()),                     //把RoleID通过逗号分隔,并实现字符串拼接
            }
                                     ).ToList();
            if (grpiquery.Count > 0)
            {
                return(grpiquery[0].RoleID);
            }
            else
            {
                return("0");
            }
            #endregion
        }
Пример #2
0
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List <AdminOutputDTO> GetPageList(int pageIndex, int pageSize, out int count, string selectInfo)
        {
            IQueryable <AdminInfo> iquery;

            if (selectInfo == null)
            {
                //说明没有点击搜索按钮
                iquery = adminInfoDAL.LoadPageEntities(pageIndex, pageSize, out count, u => u.ID > 0, u => u.ID, true);
            }
            else
            {
                //根据文本框的值进行模糊查询
                iquery = adminInfoDAL.LoadPageEntities(pageIndex, pageSize, out count, u => u.Name.Contains(selectInfo), u => u.ID, true);
            }
            //先拿到所有信息
            IQueryable <R_UserInfo_RoleInfo> r_u_rIquery = r_UserInfo_RoleInfoDAL.LoadEntities(u => u.ID > 0);//获取用户角色中间表
            IQueryable <RoleInfoOutpt>       roleIquery  = from a in roleInfoDAL.LoadEntities(u => u.ID > 0)
                                                           select new RoleInfoOutpt
            {
                RoleID   = a.RoleID,
                RoleName = a.DelFlag == 0 ? a.RoleName : a.RoleName + "(已被禁用)",
            };
            //连表查询
            IQueryable <AdminOutputDTO> linq = (from a in iquery
                                                join d in r_u_rIquery on a.AdminID equals d.AdminID into c_join
                                                from e in c_join.DefaultIfEmpty()
                                                join f in roleIquery on e.RoleID equals f.RoleID into d_join
                                                from g in d_join.DefaultIfEmpty()
                                                select new AdminOutputDTO
            {
                ID = a.ID,
                AdminID = a.AdminID,
                Name = a.Name,
                Phone = a.Phone,
                DelFlag = a.DelFlag,
                Sex = a.Sex,
                RoleName = g.RoleName,
                Email = a.Email,
            });
            //分组
            var grplinq = (from p in linq
                           group p by new
            {
                p.ID,
                p.AdminID,
                p.Name,
                p.Phone,
                p.DelFlag,
                p.Sex,
                p.Email,
            }).AsEnumerable().Select(grp => new AdminOutputDTO
            {
                ID       = grp.Key.ID,
                AdminID  = grp.Key.AdminID,
                Name     = grp.Key.Name,
                Phone    = grp.Key.Phone,
                DelFlag  = grp.Key.DelFlag,
                Sex      = grp.Key.Sex,
                Email    = grp.Key.Email,
                RoleName = string.Join(",", grp.Select(x => x.RoleName).ToArray()),               //通过逗号隔开,把RoleName合并
            }).OrderBy(u => u.ID).ToList();

            return(grplinq.ToList());
        }