炎炎设计
var staff = new[] { "A", "B", "C", "D", "E" }; //哪些人
var duty = new[] { DayOfWeek.Monday, DayOfWeek.Wednesday, DayOfWeek.Friday, DayOfWeek.Sunday }; //星期几需要有人值班
var group = 2; //每次几个人值班
var count = 0;
for (var date = new DateTime(2012, 4, 20); //开始时间
date <= new DateTime(2012, 5, 23); //结束时间
date += TimeSpan.FromDays(1))
{
if (duty.Contains(date.DayOfWeek))
{
count += group;
}
}
var index = count % staff.Length;
那么最后值班的就是staff数组里index, index+1, ... index+(group-1) 这几个人。把代码里几个地方提取成参数就可以了。