internal static IDomainQueryable <TEntity> ApplySorting <TEntity>(this IDomainQueryable <TEntity> queriable, IEnumerable <Remote.Linq.Expressions.SortExpression> sortList) where TEntity : Entity { IOrderedDomainQueryable <TEntity> orderedQueriable = null; if (!ReferenceEquals(sortList, null)) { foreach (var sort in sortList) { var exp = sort.Operand.ReplaceNonGenericQueryArgumentsByGenericArguments().ToLinqExpression(); if (ReferenceEquals(orderedQueriable, null)) { switch (sort.SortDirection) { case Remote.Linq.Expressions.SortDirection.Ascending: orderedQueriable = queriable.OrderBy(exp); break; case Remote.Linq.Expressions.SortDirection.Descending: orderedQueriable = queriable.OrderByDescending(exp); break; } } else { switch (sort.SortDirection) { case Remote.Linq.Expressions.SortDirection.Ascending: orderedQueriable = orderedQueriable.ThenBy(exp); break; case Remote.Linq.Expressions.SortDirection.Descending: orderedQueriable = orderedQueriable.ThenByDescending(exp); break; } } } } return(orderedQueriable ?? queriable); }
public static IOrderedDomainQueryable <TEntity> ThenByDescending <TEntity>(this IOrderedDomainQueryable <TEntity> queryable, LambdaExpression lambdaExpression) where TEntity : Entity { return(queryable.Call <TEntity, IOrderedDomainQueryable <TEntity>, IOrderedDomainQueryable <TEntity> >(lambdaExpression, "ThenByDescending")); }