Hi,
We noticed a difference between the declarations of the Sum and Average in the Enumerable Class. We think it is a bug.
Here's the declaration for the 'Sum':
public static decimal? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector); public static decimal Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector); public static double? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector); public static double Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector); public static float? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector); public static float Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector); public static int? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector); public static int Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector); public static long? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector); public static long Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
And here's the declaration for the 'Average':
public static decimal? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector); public static decimal Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector); public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector); public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector); public static float? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector); public static float Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector); public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector); public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector); public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector); public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
Notice that for 'Average' the overloads for int, int?, long and long? all return a Double whereas the 'Sum' return they return an int, int?, long and long?
Regards
Paul
Take a look at my blog: http://www.sinnema.ch