using System.Collections.Generic;
public IList<Segment> Segments { get; set; }
public DateTime DepartureDate { get; set; }
public DateTime ArrivalDate { get; set; }
public class FlightBuilder
private DateTime _threeDaysFromNow;
_threeDaysFromNow = DateTime.Now.AddDays(3);
public IList<Flight> GetFlights()
CreateFlight(_threeDaysFromNow, _threeDaysFromNow.AddHours(2)),
CreateFlight(_threeDaysFromNow, _threeDaysFromNow.AddHours(2), _threeDaysFromNow.AddHours(3), _threeDaysFromNow.AddHours(5)),
CreateFlight(_threeDaysFromNow.AddDays(-6), _threeDaysFromNow),
CreateFlight(_threeDaysFromNow, _threeDaysFromNow.AddHours(-6)),
CreateFlight(_threeDaysFromNow, _threeDaysFromNow.AddHours(2), _threeDaysFromNow.AddHours(5), _threeDaysFromNow.AddHours(6)),
CreateFlight(_threeDaysFromNow, _threeDaysFromNow.AddHours(2), _threeDaysFromNow.AddHours(3), _threeDaysFromNow.AddHours(4), _threeDaysFromNow.AddHours(6), _threeDaysFromNow.AddHours(7))
private static Flight CreateFlight(params DateTime[] dates)
if (dates.Length % 2 != 0) throw new ArgumentException("You must pass an even number of dates,", "dates");
var departureDates = dates.Where((date, index) => index % 2 == 0);
var arrivalDates = dates.Where((date, index) => index % 2 == 1);
var segments = departureDates.Zip(arrivalDates,
(departureDate, arrivalDate) =>
new Segment { DepartureDate = departureDate, ArrivalDate = arrivalDate }).ToList();
return new Flight { Segments = segments };
public static void Main()
Console.WriteLine("Hey");