From d26e188b66ee2eefb5e57912b151605e52bc6896 Mon Sep 17 00:00:00 2001 From: Sukhrob Ilyosbekov Date: Thu, 7 Dec 2023 22:46:38 -0500 Subject: [PATCH] added enumerable extensions --- .../Extensions/EnumerableExtensions.cs | 19 +++++++++++++----- .../Extensions/QueryableExtensions.cs | 20 ++++++++++++++++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/Core/Logistics.Domain/Extensions/EnumerableExtensions.cs b/src/Core/Logistics.Domain/Extensions/EnumerableExtensions.cs index 77704e191..4e2fa798e 100644 --- a/src/Core/Logistics.Domain/Extensions/EnumerableExtensions.cs +++ b/src/Core/Logistics.Domain/Extensions/EnumerableExtensions.cs @@ -2,11 +2,20 @@ public static class EnumerableExtensions { - public static IEnumerable Sort( + public static IOrderedEnumerable OrderBy( this IEnumerable query, - Func keySelector, - bool descending) + Func keySelector, + bool isDescendingOrder) { - return descending ? query.OrderByDescending(keySelector) : query.OrderBy(keySelector); + return isDescendingOrder ? query.OrderByDescending(keySelector) : query.OrderBy(keySelector); } -} \ No newline at end of file + + public static IEnumerable ApplyPaging( + this IEnumerable query, + int page, + int pageSize) + { + return query.Skip((page - 1) * pageSize) + .Take(pageSize); + } +} diff --git a/src/Core/Logistics.Domain/Extensions/QueryableExtensions.cs b/src/Core/Logistics.Domain/Extensions/QueryableExtensions.cs index 964ea7507..f787c74a8 100644 --- a/src/Core/Logistics.Domain/Extensions/QueryableExtensions.cs +++ b/src/Core/Logistics.Domain/Extensions/QueryableExtensions.cs @@ -1,4 +1,5 @@ -using Logistics.Domain.Core; +using System.Linq.Expressions; +using Logistics.Domain.Core; using Logistics.Domain.Specifications; namespace Logistics.Domain.Persistence; @@ -31,4 +32,21 @@ public static class QueryableExtensions return query; } + + public static IQueryable OrderBy( + this IQueryable query, + Expression> keySelector, + bool isDescendingOrder) + { + return isDescendingOrder ? query.OrderByDescending(keySelector) : query.OrderBy(keySelector); + } + + public static IQueryable ApplyPaging( + this IQueryable query, + int page, + int pageSize) + { + return query.Skip((page - 1) * pageSize) + .Take(pageSize); + } }