调之前课节为2节连排,调之后课节需要是二节连排空闲的。区分上午/下午/晚上
TKVM 为自己接收/输出类
//连排课节 拼接返回 是几节连排
int ContinuousRow = query.ContinuousRowLessonNo.Split(",").Length;
//group by 日期 TeachingDate
var dateStrs = list.Select(x => new { x.TeachingDate }).Distinct().ToList();
//日期内 连续的拼接成 1,2 / 5,6,7 LessonNo
foreach (var item in dateStrs)
{
List<TKVM> LessonNo = list.Where(x => x.TeachingDate == item.TeachingDate).ToList();//当天日期的课节
//得到想要的连排的课节 如果是2节连排 1,2,3,4 有二行数据
int i = 0;//课节
int j = 0;//连排几个
//上午和下午算跨时间段
int TimeBucket = 0;//上午/下午/晚上
string OverLessionNo = "";
foreach (var lesson in LessonNo)//课节多个拼接在一起
{
j = j + 1;
if (!string.IsNullOrEmpty(OverLessionNo)) OverLessionNo += ",";
OverLessionNo += lesson.LessonNo;
if (j != 1)
{
i = i + 1;
if (i == int.Parse(lesson.LessonNo.ToString()) && TimeBucket == int.Parse(lesson.TimeBucket.ToString()))
{
i = int.Parse(lesson.LessonNo.ToString());
TimeBucket = int.Parse(lesson.TimeBucket.ToString());
}
else
{
i = int.Parse(lesson.LessonNo.ToString());
TimeBucket = int.Parse(lesson.TimeBucket.ToString());
j = 1;//已运行一行
OverLessionNo = lesson.LessonNo;
}
}
else
{
i = int.Parse(lesson.LessonNo.ToString());
TimeBucket = int.Parse(lesson.TimeBucket.ToString());
}
if (j == ContinuousRow)
{
//加一条想要的
int endnum = int.Parse(lesson.LessonNo.ToString()) - ContinuousRow + 1;
string lessonNoStr = "";
if (endnum == int.Parse(lesson.LessonNo))
{
lessonNoStr = endnum.ToString();
}else lessonNoStr = endnum + "-" + lesson.LessonNo;
TKVM vm = new TKVM
{
TeachingDate = item.TeachingDate,
Week = lesson.Week,
LessonNo = lesson.LessonNo,
ContinuousRowLessonNo = ContinuousRow.ToString(),
StartNum = endnum.ToString(),
EndNum = lesson.LessonNo,
OverLessionNo = OverLessionNo,
TeachingWeek= lesson.TeachingWeek,
AdjustableClassPeriod = Convert.ToDateTime(item.TeachingDate).ToString("yyyy-MM-dd") + " " + lesson.Week + " " + "第" + lessonNoStr + "节"
};
nolist.Add(vm);
j = 0;
OverLessionNo = "";
}
}
}