Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

IQueryableExtensions.cs 1.1KB

1234567891011121314151617181920212223242526272829303132
  1. using System.Linq.Expressions;
  2. using BlackRock.Reporting.API.Core.Models;
  3. namespace BlackRock.Reporting.API.Extensions
  4. {
  5. public static class IQueryableExtensions
  6. {
  7. public static IQueryable<T> ApplyOrdering<T>(this IQueryable<T> query,
  8. IPaggingAndFiltering queryObj, Dictionary<string, Expression<Func<T, object>>> columnsMap)
  9. {
  10. if (string.IsNullOrWhiteSpace(queryObj.SortBy) ||
  11. !columnsMap.ContainsKey(queryObj.SortBy))
  12. return query;
  13. if (queryObj.IsSortAscending)
  14. return query.OrderBy(columnsMap[queryObj.SortBy]);
  15. return query.OrderByDescending(columnsMap[queryObj.SortBy]);
  16. }
  17. public static IQueryable<T> ApplyPagging<T>(this IQueryable<T> query,
  18. IPaggingAndFiltering queryObj)
  19. {
  20. if (queryObj.Page <= 0)
  21. queryObj.Page = 1;
  22. if (queryObj.PageSize <= 0)
  23. queryObj.PageSize = 10;
  24. return query.Skip((queryObj.Page - 1) * queryObj.PageSize)
  25. .Take(queryObj.PageSize);
  26. }
  27. }
  28. }