public GroupingQueryOrdering(LambdaExpression keySelector, DbOrderType orderType)
 {
     this._keySelector = keySelector;
     this._orderType   = orderType;
 }
Esempio n. 2
0
 public DbOrderExpression(DbOrderType orderType, Expression expression)
 {
     _orderType  = orderType;
     _expression = expression;
 }
 public DbOrderExpression(DbOrderType orderType, Expression expression)
 {
     _orderType = orderType;
     _expression = expression;
 }
Esempio n. 4
0
 protected virtual Expression BindThenBy(Expression source, LambdaExpression orderSelector, DbOrderType orderType)
 {
     if (this.thenBys == null)
     {
         this.thenBys = new List <DbOrderExpression>();
     }
     this.thenBys.Add(new DbOrderExpression(orderType, orderSelector));
     return(this.Visit(source));
 }
Esempio n. 5
0
 public DbOrdering(DbExpression expression, DbOrderType orderType)
 {
     this._expression = expression;
     this._orderType  = orderType;
 }
Esempio n. 6
0
        protected virtual Expression BindOrderBy(Type resultType, Expression source, LambdaExpression orderSelector, DbOrderType orderType)
        {
            List <DbOrderExpression> myThenBys = this.thenBys;

            this.thenBys = null;
            DbProjectionExpression projection = this.VisitSequence(source);

            this.map[orderSelector.Parameters[0]] = projection.Projector;
            List <DbOrderExpression> orderings = new List <DbOrderExpression>();

            orderings.Add(new DbOrderExpression(orderType, this.Visit(orderSelector.Body)));

            if (myThenBys != null)
            {
                for (int i = myThenBys.Count - 1; i >= 0; i--)
                {
                    DbOrderExpression tb     = myThenBys[i];
                    LambdaExpression  lambda = (LambdaExpression)tb.Expression;
                    this.map[lambda.Parameters[0]] = projection.Projector;
                    orderings.Add(new DbOrderExpression(tb.OrderType, this.Visit(lambda.Body)));
                }
            }

            var alias           = this.GetNextAlias();
            ProjectedColumns pc = this.ProjectColumns(projection.Projector, alias, projection.Select.Alias);

            return(new DbProjectionExpression(
                       new DbSelectExpression(alias, pc.Columns, projection.Select, null, orderings.AsReadOnly(), null),
                       pc.Projector
                       ));
        }
Esempio n. 7
0
 protected virtual Expression BindThenBy(Expression source, LambdaExpression orderSelector, DbOrderType orderType)
 {
     if (this.thenBys == null)
     {
         this.thenBys = new List<DbOrderExpression>();
     }
     this.thenBys.Add(new DbOrderExpression(orderType, orderSelector));
     return this.Visit(source);
 }
Esempio n. 8
0
        protected virtual Expression BindOrderBy(Type resultType, Expression source, LambdaExpression orderSelector, DbOrderType orderType)
        {
            List<DbOrderExpression> myThenBys = this.thenBys;
            this.thenBys = null;
            DbProjectionExpression projection = this.VisitSequence(source);

            this.map[orderSelector.Parameters[0]] = projection.Projector;
            List<DbOrderExpression> orderings = new List<DbOrderExpression>();
            orderings.Add(new DbOrderExpression(orderType, this.Visit(orderSelector.Body)));

            if (myThenBys != null)
            {
                for (int i = myThenBys.Count - 1; i >= 0; i--)
                {
                    DbOrderExpression tb = myThenBys[i];
                    LambdaExpression lambda = (LambdaExpression)tb.Expression;
                    this.map[lambda.Parameters[0]] = projection.Projector;
                    orderings.Add(new DbOrderExpression(tb.OrderType, this.Visit(lambda.Body)));
                }
            }

            var alias = this.GetNextAlias();
            ProjectedColumns pc = this.ProjectColumns(projection.Projector, alias, projection.Select.Alias);
            return new DbProjectionExpression(
                new DbSelectExpression(alias, pc.Columns, projection.Select, null, orderings.AsReadOnly(), null),
                pc.Projector
                );
        }
Esempio n. 9
0
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <typeparam name="TKey">排序主键类型</typeparam>
        /// <param name="includeProperty">要深度查询的属性名称集合</param>
        /// <param name="predicate">条件表达式</param>
        /// <param name="pageIndex">查询目标页数</param>
        /// <param name="pageSize">分页大小</param>
        /// <param name="total">满足查询条件的总记录数</param>
        /// <param name="orderKey">排序表达式</param>
        /// <param name="order">排序类型</param>
        /// <returns>IQueryable</returns>
        public IQueryable <T> Query <T, TKey>(IEnumerable <string> includeProperty, Expression <Func <T, bool> > predicate, int pageIndex, int pageSize, out int total, Expression <Func <T, TKey> > orderKey, DbOrderType order = DbOrderType.Asc) where T : class
        {
            try
            {
                if (pageIndex <= 0)
                {
                    pageIndex = 1;
                }

                var query = this.Set <T>().AsNoTracking().AsQueryable();
                if (predicate != null)
                {
                    query = query.Where(predicate);
                }

                total = query.Count();
                if (includeProperty != null)
                {
                    foreach (var include in includeProperty)
                    {
                        query = query.Include(include);
                    }
                }

                if (pageSize <= 0)
                {
                    return(query);
                }

                if (order == DbOrderType.Asc)
                {
                    query = query.OrderBy(orderKey);
                }
                else
                {
                    query = query.OrderByDescending(orderKey);
                }

                query = query.Skip((pageIndex - 1) * pageSize).Take(pageSize);
                return(query);
            }
            catch (Exception ex)
            {
                throw this.AnalyzeException(ex);
            }
        }
Esempio n. 10
0
 /// <summary>
 /// 分页查询
 /// </summary>
 /// <typeparam name="T">实体类型</typeparam>
 /// <typeparam name="TKey">排序主键类型</typeparam>
 /// <param name="predicate">条件表达式</param>
 /// <param name="pageIndex">查询目标页数</param>
 /// <param name="pageSize">分页大小</param>
 /// <param name="total">满足查询条件的总记录数</param>
 /// <param name="orderKey">排序表达式</param>
 /// <param name="order">排序类型</param>
 /// <returns>IQueryable</returns>
 public IQueryable <T> Query <T, TKey>(Expression <Func <T, bool> > predicate, int pageIndex, int pageSize, out int total, Expression <Func <T, TKey> > orderKey, DbOrderType order = DbOrderType.Asc) where T : class
 {
     return(this.Query <T, TKey>(null, predicate, pageIndex, pageSize, out total, orderKey, order));
 }