/// <summary> /// Calculates the results of given aggregates functions on a sequence of elements. /// </summary> /// <param name="source"> An <see cref="IQueryable" /> whose elements will /// be used for aggregate calculation.</param> /// <param name="aggregateFunctions">The aggregate functions.</param> /// <returns>Collection of <see cref="AggregateResult"/>s calculated for each function.</returns> public static AggregateResultCollection Aggregate(this IQueryable source, IEnumerable<AggregateFunction> aggregateFunctions) { var functions = aggregateFunctions.ToList(); if (functions.Count > 0) { var builder = new QueryableAggregatesExpressionBuilder(source, functions); var groups = builder.CreateQuery(); foreach (AggregateFunctionsGroup group in groups) { return group.GetAggregateResults(functions); } } return new AggregateResultCollection(); }
/// <summary> /// Calculates the results of given aggregates functions on a sequence of elements. /// </summary> /// <param name="source"> An <see cref="IQueryable" /> whose elements will /// be used for aggregate calculation.</param> /// <param name="aggregateFunctions">The aggregate functions.</param> /// <returns>Collection of <see cref="AggregateResult"/>s calculated for each function.</returns> public static AggregateResultCollection Aggregate(this IQueryable source, IEnumerable <AggregateFunction> aggregateFunctions) { var functions = aggregateFunctions.ToList(); if (functions.Count > 0) { var builder = new QueryableAggregatesExpressionBuilder(source, functions); builder.Options.LiftMemberAccessToNull = source.Provider.IsLinqToObjectsProvider(); var groups = builder.CreateQuery(); foreach (AggregateFunctionsGroup group in groups) { return(group.GetAggregateResults(functions)); } } return(new AggregateResultCollection()); }
/// <summary> /// Calculates the results of given aggregates functions on a sequence of elements. /// </summary> /// <param name="source"> An <see cref="IQueryable" /> whose elements will /// be used for aggregate calculation.</param> /// <param name="aggregateFunctions">The aggregate functions.</param> /// <returns>Collection of <see cref="AggregateResult"/>s calculated for each function.</returns> public static AggregateResultCollection Aggregate(this IQueryable source, IEnumerable<AggregateFunction> aggregateFunctions) { var functions = aggregateFunctions.ToList(); if (functions.Count > 0) { var builder = new QueryableAggregatesExpressionBuilder(source, functions); builder.Options.LiftMemberAccessToNull = source.Provider.IsLinqToObjectsProvider(); var groups = builder.CreateQuery(); foreach (AggregateFunctionsGroup group in groups) { return group.GetAggregateResults(functions); } } return new AggregateResultCollection(); }