/// <summary> /// Performs a subsequent ordering of the elements in a sequence in descending order, according to a key. /// </summary> /// <typeparam name="TKey">The type of the key returned by the function represented by keySelector.</typeparam> /// <param name="keySelector">A function to extract a key from each element.</param> /// <returns>A new query instance containing all specified query parameters</returns> IOrderedQuery <T> IOrderedQuery <T> .ThenByDescending <TKey>(Expression <Func <T, TKey> > keySelector) { if (!SortExpressions.Any()) { throw new InvalidOperationException("No sorting defined yet, use OrderBy or OrderByDescending first."); } var expression = _expressionTranslator(keySelector); var sortExpression = new Expressions.SortExpression(expression, Expressions.SortDirection.Descending); var sortExpressions = SortExpressions.ToList(); sortExpressions.Add(sortExpression); var query = new Query <T>(_dataProvider, _expressionTranslator, FilterExpressions, sortExpressions, SkipValue, TakeValue); return(query); }
/// <summary> /// Performs a subsequent ordering of the elements in a sequence in descending order, according to a key. /// </summary> /// <param name="sortExpression">A sort expression to extract a key from each element and define a sort direction.</param> /// <returns>A new query instance containing all specified query parameters.</returns> IOrderedQuery IOrderedQuery.ThenByDescending(SortExpression sortExpression) { if (!SortExpressions.Any()) { throw new InvalidOperationException("No sorting defined yet, use OrderBy or OrderByDescending first."); } if (sortExpression.SortDirection != SortDirection.Descending) { throw new ArgumentException("Expected sort expresson to be descending."); } var sortExpressions = SortExpressions.ToList(); sortExpressions.Add(sortExpression); var query = new Query(Type, FilterExpressions, sortExpressions, SkipValue, TakeValue); return(query); }