Files
monorepo/LCU.API.Internal.LoanRate/LCU.API.Internal.LoanRateLib/Extensions/Queryables/SortableFieldsQueryable.cs
T
2026-04-07 14:21:04 -05:00

29 lines
1.1 KiB
C#

using System.Linq.Dynamic.Core;
using System.Text;
namespace LCU.API.Internal.LoanRateLib.Extensions.Queryables;
public static class SortableFieldsQueryable
{
public static IQueryable<RateUploadInfo> OrderBySortableFields(this IQueryable<RateUploadInfo> queryable, RateUploadInfoFilter rateUploadInfoFilter)
{
var sortableFields = rateUploadInfoFilter.SortableFields
.Where(sortableField => sortableField.Active && sortableField.Position >= 0)
.OrderBy(sortableField => sortableField.Position).ToList();
if (sortableFields == null || !sortableFields.Any())
{
return queryable;
}
var orderBy = new StringBuilder();
foreach (var field in sortableFields)
{
var addedComma = orderBy.ToString() == "" ? "" : " ,";
var desc = field.IsDescending ? " desc" : "";
orderBy.Append($"{addedComma}{field.Field}{desc}");
}
return queryable.OrderBy(orderBy.ToString());
}
}