Example #1
0
        public virtual PageResult <dynamic> PageFind <TOrderByKey>(int pageIndex, int pageSize, Expression <Func <T, bool> > whereQuery, QueryableOrderEntry <T, TOrderByKey> orderQuery, Expression <Func <T, dynamic> > selector = null)
        {
            List <dynamic>  data       = new List <dynamic>();
            IRepository <T> repository = DalContext.Repository <T>();
            var             query      = repository.TableNoTracking.Where(whereQuery);
            int             count      = query.Count();

            if (orderQuery.OrderDirection == OrderDirection.DESC)
            {
                query = query.OrderByDescending(orderQuery.Expression);
            }
            else
            {
                query = query.OrderBy(orderQuery.Expression);
            }

            if (selector != null)
            {
                data = query.Select(selector).Skip(pageSize * pageIndex).Take(pageSize).ToList();
            }
            else
            {
                data = query.Skip(pageSize * pageIndex).Take(pageSize).ToList <dynamic>();
            }

            return(new PageResult <dynamic> {
                ItemCount = count, Data = data
            });
        }
Example #2
0
        public virtual PageResult <TResult> PageData <TResult, TOrderKey>(int pageIndex, int pageSize, Expression <Func <TResult, bool> > whereQuery, QueryableOrderEntry <TResult, TOrderKey> orderQuery, Expression <Func <T, TResult> > selector)
        {
            List <TResult> data = new List <TResult>();

            var query = DalContext.Repository <T>().TableNoTracking.Select(selector).Where(whereQuery);
            int count = query.Count();

            if (orderQuery.OrderDirection == OrderDirection.DESC)
            {
                query = query.OrderByDescending(orderQuery.Expression);
            }
            else
            {
                query = query.OrderBy(orderQuery.Expression);
            }

            data = query.Skip(pageSize * pageIndex).Take(pageSize).ToList();

            return(new PageResult <TResult> {
                ItemCount = count, Data = data
            });
        }
Example #3
0
        /// <summary>
        /// linq 分页
        /// </summary>
        /// <typeparam name="TKey"></typeparam>
        /// <param name="whereQuery">条件</param>
        /// <param name="orderQuery">排序</param>
        /// <param name="pageID">页码</param>
        /// <param name="pageSizes">每页条数</param>
        ///   /// <param name="selector">查询字段 默认 为空 全部</param>
        /// <returns></returns>
        public virtual PagedynamicResult <dynamic> GetLinqPage <TKey>(Expression <Func <T, bool> > whereQuery, QueryableOrderEntry <T, TKey> orderQuery, int pageID, int pageSizes, Expression <Func <T, dynamic> > selector = null)
        {
            //  pageID = pageID < 1 ? 0 : pageID - 1;
            List <dynamic>  data       = new List <dynamic>();
            IRepository <T> repository = DalContext.Repository <T>();
            var             query      = repository.TableNoTracking.Where(whereQuery);
            int             count      = query.Count();

            if (selector != null)
            {
                if (orderQuery.OrderDirection == OrderDirection.DESC)
                {
                    data = query.OrderByDescending(orderQuery.Expression).Select(selector)
                           .Skip(pageSizes * pageID)
                           .Take(pageSizes).ToList();
                }
                else
                {
                    data = query
                           .OrderBy(orderQuery.Expression).Select(selector)
                           .Skip(pageSizes * pageID)
                           .Take(pageSizes).ToList();
                }
            }
            else
            {
                if (orderQuery.OrderDirection == OrderDirection.DESC)
                {
                    data = query.OrderByDescending(orderQuery.Expression)
                           .Skip(pageSizes * pageID)
                           .Take(pageSizes).ToList <dynamic>();
                }
                else
                {
                    data = query
                           .OrderBy(orderQuery.Expression)
                           .Skip(pageSizes * pageID)
                           .Take(pageSizes).ToList <dynamic>();
                }
            }


            return(new PagedynamicResult <dynamic> {
                Data = data, ItemCount = count, PageSize = pageSizes, PageIndex = pageID + 1
            });
        }