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