Exemplo n.º 1
0
        public IQueryable <TEntity> CreateOrder(SeletorBase seletor, IQueryable <TEntity> query)
        {
            try
            {
                if (seletor.OrderBy != null)
                {
                    query = query.OrderBy(y => 1);

                    string[] fields = seletor.OrderBy.Split(',');

                    foreach (string fieldWithOrder in fields)
                    {
                        string[] fieldParam = fieldWithOrder.Split(' ');

                        OrderBy order = fieldParam.Length > 1 ? (OrderBy)Enum.Parse(typeof(OrderBy), fieldParam[1]) : seletor.OrderByOrder;

                        string orderBy = "ThenBy";
                        if (order == OrderBy.DESC)
                        {
                            orderBy = "ThenByDescending";
                        }

                        ParameterExpression x   = Expression.Parameter(query.ElementType, "x");
                        LambdaExpression    exp = Expression.Lambda(Expression.PropertyOrField(x, fieldParam[0].Trim()), x);
                        query = (IQueryable <TEntity>)query.Provider.CreateQuery(Expression.Call(typeof(Queryable), orderBy, new Type[] {
                            query.ElementType, exp.Body.Type
                        }, query.Expression, exp));
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return(query);
        }
Exemplo n.º 2
0
        public IQueryable <TEntity> CreateLimit(SeletorBase seletor, IQueryable <TEntity> query)
        {
            if (seletor.Pagina < 0)
            {
                seletor.Pagina = 1;
            }
            int skip = ((seletor.Pagina - 1) * seletor.RegistroPorPagina);
            int take = seletor.RegistroPorPagina;

            return(query.Skip(skip).Take(take));
        }