public void GetWorkingPlanForEmployees(List <IEmployee> employees, List <WorkingPlan> plans, ISchedule schedule) { foreach (IEmployee employee in employees) { List <IWorkingOption> workingPlan = (from p in plans where p.EmployeeID == employee.Id && p.ScheduleID == schedule.Id select p.WorkingOptions).Single(); // Fill in output schedule with plans for each day int i = 0; schedule.IterateOverAllDays((day) => { IWorkingOption planForDay = workingPlan[i++]; schedule.ChangeWorkDay(employee.Id, day, planForDay.Symbol, planForDay.StartingHour, planForDay.WorkingTime); }); } }