using System.Collections.Generic;
public DateTime Date { get; set; }
public double Estimated { get; set; }
static class ExtensionMethods
public static IEnumerable<TOut> Accumulate<TIn, TOut>(this IEnumerable<TIn> source, Func<TIn,double> getFunction, Func<TIn,double,TOut> createFunction)
foreach (var item in source)
accumulator += getFunction(item);
yield return createFunction(item, accumulator);
public static void Main()
new Foo { Date = new DateTime(2018,1,1), Estimated = 1 },
new Foo { Date = new DateTime(2018,1,2), Estimated = 2 },
new Foo { Date = new DateTime(2018,1,3), Estimated = 3 },
new Foo { Date = new DateTime(2018,1,4), Estimated = 4 },
new Foo { Date = new DateTime(2018,1,5), Estimated = 5 }
var accumulatedList = list.Accumulate
(item) => item.Estimated,
(item, sum) => new { Item = item, Sum = sum }
foreach (var item in accumulatedList)
Console.WriteLine("{0:yyyy-MM-dd} {1}", item.Item.Date, item.Sum);