Esempio n. 1
0
        public static SmartTableResult <TResult> ToSmartTableResult <TModel, TResult>(this IQueryable <TModel> query, SmartTableParam param, Func <TModel, TResult> selector)
        {
            if (param.Pagination.Number <= 0)
            {
                param.Pagination.Number = 10;
            }

            var totalRecord = query.Count();

            if (!string.IsNullOrWhiteSpace(param.Sort.Predicate))
            {
                query = query.OrderByName(param.Sort.Predicate, param.Sort.Reverse);
            }
            else
            {
                query = query.OrderByName("Id", true);
            }

            var items = query
                        .Skip(param.Pagination.Start)
                        .Take(param.Pagination.Number)
                        .Select(selector).ToList();

            return(new SmartTableResult <TResult>
            {
                Items = items,
                TotalRecord = totalRecord,
                NumberOfPages = (int)Math.Ceiling((double)totalRecord / param.Pagination.Number)
            });
        }