public static Sql.IAggregateFunction <T, TR> OrderBy <T, TR>( [ExprParameter] this Sql.IAggregateFunctionNotOrdered <T, TR> aggregate) { if (aggregate == null) { throw new ArgumentNullException(nameof(aggregate)); } var query = aggregate.Query.Provider.CreateQuery <TR>( Expression.Call( null, MethodHelper.GetMethodInfo(OrderBy, aggregate), Expression.Constant(aggregate) )); return(new Sql.AggregateFunctionNotOrderedImpl <T, TR>(query)); }
public static Sql.IAggregateFunctionOrdered <T, TR> OrderByDescending <T, TR, TKey>( this Sql.IAggregateFunctionNotOrdered <T, TR> aggregate, [ExprParameter] Expression <Func <T, TKey> > expr) { if (aggregate == null) { throw new ArgumentNullException(nameof(aggregate)); } if (expr == null) { throw new ArgumentNullException(nameof(expr)); } var query = aggregate.Query.Provider.CreateQuery <TR>( Expression.Call( null, MethodHelper.GetMethodInfo(OrderByDescending, aggregate, expr), Expression.Constant(aggregate), Expression.Quote(expr))); return(new Sql.AggregateFunctionNotOrderedImpl <T, TR>(query)); }