コード例 #1
0
 public PageInfo(int pageSize = 10, int pageNo = 1, string orderBy = null, EnumCommon.SortDirection direction = 0)
 {
     PageSize    = pageSize;
     PageNo      = pageNo;
     OrderBy     = orderBy;
     Direction   = direction;
     Fields      = new List <string>();
     Fieldvalues = new List <string>();
 }
コード例 #2
0
        public ListFeedback <T> GetAll(PageInfo pageInfo, string sortColumn, EnumCommon.SortDirection direction)
        {
            var total = Dbset.Count();
            var query = Dbset.OrderByCustom(sortColumn, direction)
                        .Skip((pageInfo.PageNo - 1) * pageInfo.PageSize)
                        .Take(pageInfo.PageSize);

            List <T> groups = new List <T>();

            foreach (var item in query)
            {
                groups.Add(item);
            }

            return(new ListFeedback <T>(true, groups, total));
        }
コード例 #3
0
        // <summary>Orders the sequence by specific column and direction.</summary>
        /// <param name="query">The query.</param>
        /// <param name="sortColumn">The sort column.</param>
        /// <param name="direction">asc/desc</param>
        public static IQueryable <T> OrderByCustom <T>(this IQueryable <T> query, string sortColumn, EnumCommon.SortDirection direction)
        {
            var methodName = string.Format("OrderBy{0}", direction == EnumCommon.SortDirection.Ascending ? "" : "descending");

            var parameter = Expression.Parameter(query.ElementType, "p");

            MemberExpression memberAccess = null;

            foreach (var property in sortColumn.Split('.'))
            {
                memberAccess = MemberExpression.Property(memberAccess ?? (parameter as Expression), property);
            }

            var orderByLambda = Expression.Lambda(memberAccess, parameter);

            var result = Expression.Call(
                typeof(Queryable),
                methodName,
                new[] { query.ElementType, memberAccess.Type },
                query.Expression,
                Expression.Quote(orderByLambda));

            return(query.Provider.CreateQuery <T>(result));
        }