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); }
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)); } }