/// <summary> /// Creates a new query that applies an accumulator function over a sequence. The specified seed value is used as the initial accumulator value. /// </summary> /// <typeparam name="TSource">The type of the elements of source.</typeparam> /// <typeparam name="TAcc">The type of the accumulator value.</typeparam> /// <param name="query">An query whose values are used to aggregate over.</param> /// <param name="seed">The initial accumulator value.</param> /// <param name="func">An accumulator function to be invoked on each element.</param> /// <returns>A query that returns the final accumulator value.</returns> public static IQueryExpr <TAcc> Aggregate <TSource, TAcc>(this IQueryExpr <IEnumerable <TSource> > query, TAcc seed, Expression <Func <TAcc, TSource, TAcc> > func) { return(new QueryExpr <TAcc>(QExpr.NewAggregate(Expression.Constant(seed), func, query.Expr))); }