29 lines
1.1 KiB
C#
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());
|
|
}
|
|
}
|