BiasCorrectQ.Program.DailyToMonthly C# (CSharp) Method

DailyToMonthly() private static method

private static DailyToMonthly ( List data ) : List
data List
return List
        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;
        }