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"));
 }