Exemplo n.º 1
0
        public static IQueryable <TModel> ApplyPaging <TModel>(this IQueryable <TModel> query, DataOptions options)
        {
            if (options.HasPaging())
            {
                if (options.Skip > 0)
                {
                    query = query.Skip(options.Skip.Value).Take(options.Take.Value).Cast <TModel>();
                }
                else
                {
                    query = query.Take(options.Take.Value).Cast <TModel>();
                }
            }

            return(query);
        }
Exemplo n.º 2
0
        public static DataListResponse <TModel> ToDataListResponse <TModel>(this IQueryable <TModel> query, DataOptions options)
        {
            var creator = new DataOptionsQueryCreator <TModel>(options);

            query = query.ApplyFilter(options, creator);

            if (options.HasPaging())
            {
                var totalCount = query.ToRowCountFutureValue();

                query = query.ApplyOrder(options, creator);
                query = query.ApplyPaging(options);
                var items = query.ToFuture();

                return(new DataListResponse <TModel>(items.ToList(), totalCount.Value));
            }
            else
            {
                query = query.ApplyOrder(options, creator);
                var items = query.ToList();

                return(new DataListResponse <TModel>(items, items.Count));
            }
        }