Example #1
0
        public static IOrderedSpecificationBuilder <T> OrderByDescending <T>(
            this ISpecificationBuilder <T> specificationBuilder,
            Expression <Func <T, object?> > orderExpression)
        {
            ((List <(Expression <Func <T, object?> > OrderExpression, OrderTypeEnum OrderType)>)specificationBuilder.Specification.OrderExpressions)
            .Add((orderExpression, OrderTypeEnum.OrderByDescending));

            var orderedSpecificationBuilder = new OrderedSpecificationBuilder <T>(specificationBuilder.Specification);

            return(orderedSpecificationBuilder);
        }
Example #2
0
        /// <summary>
        /// Specify the query result will be ordered by <paramref name="orderExpression"/> in a descending order
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="specificationBuilder"></param>
        /// <param name="orderExpression"></param>
        /// <param name="condition">If false, the expression won't be added. The whole Order chain will be discarded.</param>
        public static IOrderedSpecificationBuilder <T> OrderByDescending <T>(
            this ISpecificationBuilder <T> specificationBuilder,
            Expression <Func <T, object?> > orderExpression,
            bool condition)
        {
            if (condition)
            {
                ((List <OrderExpressionInfo <T> >)specificationBuilder.Specification.OrderExpressions).Add(new OrderExpressionInfo <T>(orderExpression, OrderTypeEnum.OrderByDescending));
            }

            var orderedSpecificationBuilder = new OrderedSpecificationBuilder <T>(specificationBuilder.Specification, !condition);

            return(orderedSpecificationBuilder);
        }