我有一个只包含一周训练(31次训练)的时间表,现在我需要生成其余的训练,直到时间表结束(例如20120601-20120831)。 所以我想可能循环锻炼,并把addDays(7)放在所有workout.date上。如何在计划中生成缺失的日期?
我已经尝试使用foreach和for,但不能得到它的工作。
我GenerateSchedule方法:
public ActionResult GenerateSchedule(int scheduleId)
{
//get schedule included list of 31 workouts
//only added one week on workouts
var schedule = _scheduleServices.GetSchedule(scheduleId);
var workouts = schedule.Workouts.ToList();
int i = 0;
for(var day = schedule.FromDate; day.Date <= schedule.ToDate; day = day.AddDays(1))
{
foreach (var workout in workouts)
{
}
var newWorkout = new WorkoutFormModel
{
ScheduleId = workouts[i].ScheduleId,
Date = workouts[i].Date.AddDays(7),
StartTime = workouts[i].StartTime,
EndTime = workouts[i].EndTime,
InstructorId = workouts[i].Instructor.Id,
CourseId = workouts[i].Course.Id,
};
i++;
_workoutServices.AddWorkout(newWorkout);
}
/*
foreach(var workout in schedule.Workouts)
{
if (workout.Date.AddDays(7) <= schedule.ToDate)
{
var newWorkout = new WorkoutFormModel
{
ScheduleId = workout.ScheduleId,
Date = workout.Date.AddDays(7),
StartTime = workout.StartTime,
EndTime = workout.EndTime,
InstructorId = workout.Instructor.Id,
CourseId = workout.Course.Id,
};
_workoutServices.AddWorkout(newWorkout);
}
}*/
return RedirectToAction("Overview", new { scheduleId });
}
更新:
private static List<WorkoutFormModel> ExtendSchedule(Schedule schedule)
{
var workoutList = new List<WorkoutFormModel>();
for (var workoutStart = schedule.FromDate; workoutStart <= schedule.ToDate; workoutStart = workoutStart.AddDays(7))
{
workoutList.AddRange(schedule.Workouts.Select(Workout => new WorkoutFormModel
{
ScheduleId = schedule.Id,
Date = workoutStart.Add(Workout.WeekOffset),
StartTime = Workout.StartTime,
EndTime = Workout.EndTime,
Course = Workout.Course
}));
}
return workoutList;
}
你只是将你的锻炼保持在列表中? (基本上是线性数组?)你可以将它们存储在HashMap中吗?然后,您可以使用DateTime的自定义子类作为关键字,并从工作日开始查找锻炼,并开始计时 – olagjo 2012-08-05 22:20:17