Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Based on a (total) guess of what you're trying to do here:</p> <pre><code>public class Program { static void Main(string[] args) { TestDateRange(DateTime.Today, DateTime.Today.AddMonths(1)); } Dictionary&lt;DateTime, List&lt;string&gt;&gt; bookings; int maxOccupancy = 2; public Program(int year = 2011) { bookings = getDateRange(new DateTime(year, 1, 1), new DateTime(year,12,31)).ToDictionary(day =&gt; day, day =&gt; new List&lt;string&gt;()); } private static void TestDateRange(DateTime startDate, DateTime endDate) { Program p = new Program(); if (p.GetFullDaysInDateRange(startDate, endDate).Count() == 0) { string bookingName = "Booking for test"; p.AddBooking(startDate, endDate, bookingName); } } private IEnumerable&lt;DateTime&gt; getDateRange(DateTime startDate, DateTime endDate) { if (startDate &gt; endDate) { return null; } return Enumerable.Range((int)startDate.ToOADate(), endDate.Subtract(startDate).Days).Select(day =&gt; DateTime.FromOADate(day)); } private void AddBooking(DateTime startDate, DateTime endDate, string name) { IEnumerable&lt;DateTime&gt; range = getDateRange(startDate, endDate); foreach (DateTime date in range) { if (bookings[date].Contains(name)) return; //already placed this booking if (bookings[date].Count &gt; maxOccupancy) throw new Exception(String.Format("Cannot book on {0}: full", date)); bookings[date].Add(name); } } public IEnumerable&lt;DateTime&gt; GetFullDaysInDateRange(DateTime startDate, DateTime endDate) { IEnumerable&lt;DateTime&gt; testRange = getDateRange(startDate, endDate); List&lt;DateTime&gt; bookedDays = new List&lt;DateTime&gt;(); foreach (DateTime date in testRange) { if (bookings[date].Count &gt; maxOccupancy) bookedDays.Add(date); } return bookedDays; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload