예제 #1
0
        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));
        }
예제 #2
0
        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));
        }