public static IOrderedQueryable <T> Ordering <T>(IQueryable <T> input, List <OrderInput> orderInputs) { var parameter = Expression.Parameter(typeof(T), "p"); var firstOrderInput = orderInputs[0]; var result = firstOrderInput.Order == OrderTypeEnum.Asc ? OrderingHelper.OrderBy(input, firstOrderInput.Property, parameter) : OrderingHelper.OrderByDescending(input, firstOrderInput.Property, parameter); for (int i = 1; i < orderInputs.Count; i++) { var orderInput = orderInputs[i]; result = orderInput.Order == OrderTypeEnum.Asc ? OrderingHelper.ThenBy(result, orderInput.Property, parameter) : OrderingHelper.ThenByDescending(result, orderInput.Property, parameter); } return(result); }
public static IOrderedQueryable <T> ThenByDescending <T>(this IOrderedQueryable <T> source, string propertyName) => OrderingHelper <T> .ThenByDescending(source, propertyName);