/// <summary>
/// Write the yearly results to a data file in CSV format.
/// </summary>
/// <returns>0 if successful; -ve for error code</returns>
protected int WriteYearlyResults()
{
OpenTemp.WriteLine(string.Format(”Writing the yearly results file ‘{0}’…”, _outputYearlyFile));
// Open the file
StreamWriter sw;
try
{
sw = new StreamWriter(_outputYearlyFile, false); // Overwrite (do not append)
OpenTemp.WriteLine(” File opened for writing”);
}
catch (Exception ex)
{
OpenTemp.WriteLine(string.Format(” Exception thrown when opening file: {0}”, ex.ToString()));
return -1;
}
if (sw == null)
{
OpenTemp.WriteLine(” Failed to open file (check that it exists and the path is correct)”);
return -2;
}
// Write header
sw.Write(”YEAR,AVG”);
sw.WriteLine();
// Calculate yearly averages
int nMonths = 0;
SortedList<int, float> yearAverages = new SortedList<int, float>();
foreach (KeyValuePair<DateTime, float> average in _monthlyAverages)
{
if (!yearAverages.ContainsKey(average.Key.Year))
{
yearAverages.Add(average.Key.Year, 0.0f);
}
yearAverages[average.Key.Year] += average.Value / 12.0f;
nMonths++;
}
// Write yearly data
foreach (int year in yearAverages.Keys)
{
sw.WriteLine(string.Format(”{0}, {1}”, year, yearAverages[year].ToString(”F2″)));
}
// Done
sw.Close();
// Done
OpenTemp.WriteLine(string.Format(” Writing finished: {0} months written”, nMonths));
return 0;
}