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