private static List<Point> DailyToMonthly(List<Point> data)
{
var rval = new List<Point> { };
int startYear = data.First().Date.Year;
int startMonth = data.First().Date.Month;
int endYear = data.Last().Date.Year;
int endMonth = data.Last().Date.Month;
var startDate = new DateTime(startYear, startMonth, 1);
var endDate = new DateTime(endYear, endMonth, 1);
int currIdx = 0;
var currDate = startDate;
while (currDate <= endDate)
{
var values = new List<double> { };
for (int i = currIdx; i < data.Count; i++)
{
var pt = data[i];
if (pt.Date.Month == currDate.Month)
{
values.Add(pt.Value);
currIdx++;
}
else
{
break;
}
}
rval.Add(new Point(currDate, values.Average()));
currDate = currDate.AddMonths(1);
}
return rval;
}