public static IEnumerable<Tuple<string, DateTime>> CalculateHolidaysVerbose(DateTime start, DateTime end)
{
var holidays = new Dictionary<DateTime, string>();
foreach (var holidayTemplate in HolidayTemplates)
{
var proposedDate = holidayTemplate.CalculateDate(start, end);
if (holidays.ContainsKey(proposedDate))
{
holidays.Add(proposedDate.AddDays(1), holidayTemplate.Name);
}
else
{
holidays.Add(proposedDate, holidayTemplate.Name);
}
}
return holidays.Select(h => new Tuple<string, DateTime>(h.Value, h.Key)).OrderBy(d => d.Item2);
}