Ejemplo n.º 1
0
        /// <summary>
        /// 获取分页数据,返回泛型实体List集合
        /// </summary>
        /// <param name="predicate">Linq表达式[条件查询]</param>
        /// <param name="pageIndex">当前索引的页面</param>
        /// <param name="pageSize">每一页,页面的行数.</param>
        /// <param name="sortBy">Linq表达式[排序字段]</param>
        /// <param name="desc">默认True为降序,False升序</param>
        /// <returns>AdminUser实体对象的List集合</returns>
        public static List <AdminUser> GetPaged(Expression <Func <AdminUser, bool> > predicate, int pageIndex, int pageSize, Func <AdminUser, object> sortBy, bool desc = true)
        {
            List <AdminUser> list = null;
            int totalCount        = 0;

            if (predicate != null)
            {
                try
                {
                    using (BaseEntityDbContext <AdminUser> db = new BaseEntityDbContext <AdminUser>())
                    {
                        IQueryable <AdminUser> query = db.BaseDbSet.Where(predicate); //默认排序
                        if (sortBy != null)                                           //执行排序
                        {
                            if (desc)
                            {
                                list = query.OrderByDescending(sortBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
                            }
                            else
                            {
                                list = query.OrderBy(sortBy).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
                            }
                        }
                        else//系统默认排序
                        {
                            list = query.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
                        }
                        totalCount = query.Count();
                    }
                }
                catch (Exception ex)
                {
                    log.Error("获取失败", ex);
                }
            }
            return(list);
        }
Ejemplo n.º 2
0
Archivo: Abc.cs Proyecto: chenmsg/sujin
        /// <summary>
        /// 获取该实体的查询,多排序
        /// </summary>
        /// <param name="top">查询前几条,top小于等于0则展示全部</param>
        /// <param name="predicate">表达式</param>
        /// <param name="sortDic">字典存放多个排序字段,Key = 默认True为降序,False升序</param>
        /// <returns>Abc实体对象的List集合</returns>
        public static List <Abc> GetQuery(int top, Expression <Func <Abc, bool> > predicate, Dictionary <Func <Abc, object>, bool> sortDic)
        {
            List <Abc> list = null;

            if (predicate != null)
            {
                try
                {
                    using (BaseEntityDbContext <Abc> db = new BaseEntityDbContext <Abc>())
                    {
                        if (sortDic != null && sortDic.Count > 0)//根据字典内的排序执行
                        {
                            IQueryable <Abc>         query      = db.BaseDbSet.Where(predicate);
                            IOrderedEnumerable <Abc> queryOrder = null;
                            int num = 0;
                            foreach (KeyValuePair <Func <Abc, object>, bool> kvp in sortDic)
                            {
                                if (num == 0)      //第一个
                                {
                                    if (kvp.Value) //True为降序
                                    {
                                        queryOrder = query.OrderByDescending(kvp.Key);
                                    }
                                    else
                                    {
                                        queryOrder = query.OrderBy(kvp.Key);
                                    }
                                }
                                else
                                {
                                    if (kvp.Value)//True为降序
                                    {
                                        queryOrder = queryOrder.ThenByDescending(kvp.Key);
                                    }
                                    else
                                    {
                                        queryOrder = queryOrder.ThenBy(kvp.Key);
                                    }
                                }
                                num++;
                            }
                            if (queryOrder != null)
                            {
                                if (top > 0)//top<=0则展示全部
                                {
                                    list = queryOrder.Take(top).ToList();
                                }
                                else
                                {
                                    list = queryOrder.ToList();
                                }
                            }
                            else
                            {
                                if (top > 0)//top<=0则展示全部
                                {
                                    list = query.Take(top).ToList();
                                }
                                else
                                {
                                    list = query.ToList();
                                }
                            }
                        }
                        else//默认排序
                        {
                            if (top > 0)//top<=0则展示全部
                            {
                                list = db.BaseDbSet.Where(predicate).Take(top).ToList();
                            }
                            else
                            {
                                list = db.BaseDbSet.Where(predicate).ToList();
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    log.Error("获取失败", ex);
                }
            }
            return(list);
        }