using System.Collections.Generic;
public static void Main()
IList<Deviation> deviations = new List<Deviation>(){ new Deviation(){ ID = 1 }};
foreach (Deviation dev in deviations.Where(d => d.ID > 0))
Console.WriteLine(dev.Duty.Text);
Console.WriteLine(DeviationCalculations.GetLastDutyEndDateAndTimeForSubsequentDeviations(deviations, dev));
Console.WriteLine(DeviationCalculations.GetFirstDutyStartDateAndTimeForSubsequentDeviations(deviations, dev));
Console.WriteLine(dev.Text);
public DateTime ValidEndDateAndTime;
public DateTime ValidStartDateAndTime;
public class DeviationCalculations
public static DateTime GetLastDutyEndDateAndTimeForSubsequentDeviations(IList<Deviation> sortedDeviations, Deviation deviation)
DateTime lastDutyEndDate = deviation.ValidEndDateAndTime;
for (int i = 0; i < sortedDeviations.Count; i++)
if (sortedDeviations[i].ValidStartDateAndTime == lastDutyEndDate)
lastDutyEndDate = sortedDeviations[i].ValidEndDateAndTime;
public static DateTime GetFirstDutyStartDateAndTimeForSubsequentDeviations(IList<Deviation> sortedDeviations, Deviation deviation)
DateTime firstDutyStartDate = deviation.ValidStartDateAndTime;
for (int i = sortedDeviations.Count - 1; i >= 0; i--)
if (sortedDeviations[i].ValidEndDateAndTime == firstDutyStartDate)
firstDutyStartDate = sortedDeviations[i].ValidStartDateAndTime;
return firstDutyStartDate;