Files
2026-04-07 14:21:04 -05:00

29 lines
1.1 KiB
C#

using System.Text;
using System.Linq.Dynamic.Core;
namespace LCU.API.Internal.LoanRateLoadTestingLib.Extensions.Queryables;
public static class SortableFieldsQueryable
{
public static IQueryable<LoadTestRunInfo> OrderBySortableFields(this IQueryable<LoadTestRunInfo> queryable, LoadTestRunInfoFilter loadTestRunInfoFilter)
{
var sortableFields = loadTestRunInfoFilter.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());
}
}