using System.Collections.Generic;
public Range(DateTime from, DateTime to) {
public DateTime From { get; set; }
public DateTime To { get; set; }
public static void Main()
var blockedDates = new[] {
new DateTime(2015, 11, 10),
new DateTime(2015, 11, 5),
new DateTime(2015, 11, 8),
new DateTime(2015, 11, 6),
new DateTime(2015, 11, 17),
new DateTime(2015, 11, 9),
new DateTime(2015, 11, 14),
new DateTime(2015, 11, 16),
new DateTime(2015, 11, 20),
var blockedRanges = new List<Range>();
var blockedRange = (Range)null;
foreach(var date in blockedDates.OrderBy(d => d)) {
if (blockedRange == null || blockedRange.To.AddDays(1) != date) {
blockedRange = new Range(date, date);
blockedRanges.Add(blockedRange);
foreach(var range in blockedRanges)
Console.WriteLine("from {0:d} to {1:d}", range.From, range.To);