refactor(extensions): improve sorting logic in ApplyOrder method
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 21m1s

- Simplified the default sorting approach by directly returning the ordered source.
- Introduced NormalizeSortBy method to handle dynamic LINQ sorting, accommodating leading '+' and '-' for ascending and descending order respectively.
- Enhanced code clarity and maintainability by reducing unnecessary variable assignments.
This commit is contained in:
masoodafar-web
2026-06-23 00:11:37 +03:30
parent 46ac1d817e
commit 7570c39e65
@@ -8,16 +8,31 @@ public static class SortByExtensions
public static IQueryable<TSource> ApplyOrder<TSource>(this IQueryable<TSource> source,
string? sortBy) where TSource : BaseAuditableEntity
{
// default sort approach
if (sortBy is null or "")
{
source = source.OrderByDescending(p => p.Created);
return source;
return source.OrderByDescending(p => p.Created);
}
// sort using dynamic linq
source = source.OrderBy(sortBy);
return source.OrderBy(NormalizeSortBy(sortBy));
}
return source;
/// <summary>
/// Dynamic LINQ treats "-Created" as unary minus on DateTime (invalid).
/// Project convention: leading '-' means descending sort.
/// </summary>
private static string NormalizeSortBy(string sortBy)
{
sortBy = sortBy.Trim();
if (sortBy.StartsWith('-') && sortBy.Length > 1)
{
return $"{sortBy[1..]} descending";
}
if (sortBy.StartsWith('+') && sortBy.Length > 1)
{
return $"{sortBy[1..]} ascending";
}
return sortBy;
}
}