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