diff --git a/framework/src/Volo.Abp.Core/System/Linq/AbpQueryableExtensions.cs b/framework/src/Volo.Abp.Core/System/Linq/AbpQueryableExtensions.cs
index ea6ddddd13..4297f5c697 100644
--- a/framework/src/Volo.Abp.Core/System/Linq/AbpQueryableExtensions.cs
+++ b/framework/src/Volo.Abp.Core/System/Linq/AbpQueryableExtensions.cs
@@ -95,4 +95,21 @@ public static class AbpQueryableExtensions
? (TQueryable)query.Where(predicate)
: query;
}
+
+ ///
+ /// Order a by given predicate if given condition is true.
+ ///
+ /// Queryable to apply filtering
+ /// A boolean value
+ /// Order the query
+ /// Order or not order query based on
+ public static TQueryable OrderByIf([NotNull] this TQueryable query, bool condition, string sorting)
+ where TQueryable : IQueryable
+ {
+ Check.NotNull(query, nameof(query));
+
+ return condition
+ ? (TQueryable)Dynamic.Core.DynamicQueryableExtensions.OrderBy(query, sorting)
+ : query;
+ }
}
diff --git a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
index 923afa1d3c..ab4cd0049f 100644
--- a/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
+++ b/framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
@@ -252,7 +252,7 @@ public class EfCoreRepository : RepositoryBase, IE
: await GetDbSetAsync();
return await queryable
- .OrderBy(sorting)
+ .OrderByIf>(!sorting.IsNullOrWhiteSpace(), sorting)
.PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
}
diff --git a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
index 0864b2a733..4180121a9f 100644
--- a/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
+++ b/framework/src/Volo.Abp.MemoryDb/Volo/Abp/Domain/Repositories/MemoryDb/MemoryDbRepository.cs
@@ -285,7 +285,7 @@ public class MemoryDbRepository : RepositoryBase>(!sorting.IsNullOrWhiteSpace(), sorting)
.PageBy(skipCount, maxResultCount)
.ToList();
}
diff --git a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs
index 388330e69a..f269fe4201 100644
--- a/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs
+++ b/framework/src/Volo.Abp.MongoDB/Volo/Abp/Domain/Repositories/MongoDB/MongoDbRepository.cs
@@ -465,7 +465,7 @@ public class MongoDbRepository
cancellationToken = GetCancellationToken(cancellationToken);
return await (await GetMongoQueryableAsync(cancellationToken))
- .OrderBy(sorting)
+ .OrderByIf>(!sorting.IsNullOrWhiteSpace(), sorting)
.As>()
.PageBy>(skipCount, maxResultCount)
.ToListAsync(cancellationToken);