调课:合并连排课节

这段代码主要处理课程调整问题,目的是找到并标记出连续的二节空闲课节,区分上午、下午和晚上。首先通过Split方法获取连排课节数,然后按日期对课程进行分组。接着遍历每个日期的课程,找出连续的2节连排课节,并创建新的TKVM对象存储相关信息,如教学日期、连排节数、起始和结束节数等。最后将这些信息添加到结果列表中。
摘要由CSDN通过智能技术生成

调之前课节为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 = "";
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值