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