public static IPromise <int> Sum(this IPromiseEnumerable <int> items)
 {
     return(items.Aggregate((prev, current) => prev + current, (int)0));
 }
 public static IPromise <double> Average(this IPromiseEnumerable <float?> items)
 {
     return(items.Sum().Then(sum => items.Count().Then(count => ((double)sum) / ((double)count))));
 }
 public static IPromise <float> Sum(this IPromiseEnumerable <float?> items)
 {
     return(items.Sum(x => x.HasValue ? x.Value : (float)0));
 }
 public static IPromise <double> Sum(this IPromiseEnumerable <double?> items)
 {
     return(items.Sum(x => x.HasValue ? x.Value : (double)0));
 }
 public static IPromise <decimal> Sum(this IPromiseEnumerable <decimal?> items)
 {
     return(items.Sum(x => x.HasValue ? x.Value : (decimal)0));
 }
 public static IPromise <long> Sum(this IPromiseEnumerable <long?> items)
 {
     return(items.Sum(x => x.HasValue ? x.Value : (long)0));
 }
        public static IPromise <decimal?> Max(this IPromiseEnumerable <decimal?> items)
        {
            var filtered = items.Where(x => x.HasValue).Select(x => x.Value);

            return(filtered.Empty().Then(empty => empty ? items.Factory.Value <decimal?>(null) : filtered.Max().Then(v => ((decimal?)v))));
        }
 public static IPromise <decimal> Max(this IPromiseEnumerable <decimal> items)
 {
     return(items.First().Then(first => items.Aggregate((prev, current) => Math.Max(prev, current), first)));
 }
 public static IPromise <float> Min(this IPromiseEnumerable <float> items)
 {
     return(items.First().Then(first => items.Aggregate((prev, current) => Math.Min(prev, current), first)));
 }