using System.Text; using System.Linq; using System.Linq.Dynamic.Core; using LCU.Library.Internal.DispatcherModels.Models; using LCU.Library.Internal.DispatcherModels.Entities; namespace LCU.Api.Internal.DispatcherLib.Extensions.Queryables; public static class SortableFieldsQueryable { public static IQueryable OrderBySortableFields(this IQueryable queryable, Filter filter) { if (filter?.SortableFields == null || !filter.SortableFields.Any()) { return queryable; } var orderBy = new StringBuilder(); foreach (var field in filter.SortableFields.OrderBy(sortableField => sortableField.Position)) { var addedComma = orderBy.ToString() == "" ? "" : " ,"; var desc = field.IsDescending ? " desc" : ""; orderBy.Append($"{addedComma}{field.Field}{desc}"); } return queryable.OrderBy(orderBy.ToString()); } }