using System.Collections;
using System.Collections.Generic;
public static void Main()
var startDate = new DateTime(2016, 10, 1);
var endDate = new DateTime(2016, 10, 5);
var range = new DateRange(startDate, endDate);
foreach(var date in range)
Console.WriteLine(date.ToString("dd/MM/yyyy") + " - Days From Start: " + range.DaysFromStart((date)));
public class DateRange : IEnumerable<DateTime>
private readonly DateTime _start;
private readonly DateTime _end;
public DateRange(DateTime start, DateTime end)
public DateTime Start { get { return _start;} }
public DateTime End { get { return _end; } }
public bool Includes(DateTime date)
return date >= Start && date <= End;
IEnumerator IEnumerable.GetEnumerator()
public IEnumerator<DateTime> GetEnumerator()
for (var d = Start; d <= End; d = d.AddDays(1))
public int DaysFromStart(DateTime date)
return (date - Start).Days;