// 課程名稱排序 private int SortCourseScoreName(CourseScoreCountRecord x, CourseScoreCountRecord y) { return(x.CourseName.CompareTo(y.CourseName)); }
void _bgWk_DoWork(object sender, DoWorkEventArgs e) { CourseScoreStatusFormOption Option = e.Argument as CourseScoreStatusFormOption; List <CourseScoreCountRecord> CourseScoreCountEntityList = new List <CourseScoreCountRecord>(); List <CourseScoreCountRecord> CourseScoreCountEntityListNonInput = new List <CourseScoreCountRecord>(); List <CourseScoreCountRecord> CourseScoreCountEntityListNonInputScore = new List <CourseScoreCountRecord>(); // 處理取得這所選學年學期有課程id,name,修課id DAO.QueryData.ProcesstCourseNameStudentBySchoolYearSemester(Option.SchoolYear, Option.Semester); Dictionary <string, string> CourseIDNameDict = DAO.QueryData._CourseIDNameDict; List <JHSCAttendRecord> SCAttendList = JHSCAttend.SelectByIDs(DAO.QueryData._SCAttenndIDList); Dictionary <string, List <JHSCAttendRecord> > CourseSCAttendDict = new Dictionary <string, List <JHSCAttendRecord> >(); foreach (JHSCAttendRecord rec in SCAttendList) { if (!CourseSCAttendDict.ContainsKey(rec.RefCourseID)) { CourseSCAttendDict.Add(rec.RefCourseID, new List <JHSCAttendRecord>()); } CourseSCAttendDict[rec.RefCourseID].Add(rec); } // 取得課程授課教師 Dictionary <string, string> CourseTeacherNameDict = DAO.QueryData.GetCourseTeacher(Option.SchoolYear, Option.Semester); #region 計算人數並組成回傳格式 foreach (string CourseID in CourseIDNameDict.Keys) { CourseScoreCountRecord vCourseScoreCountRecord = new CourseScoreCountRecord(); vCourseScoreCountRecord.CourseID = CourseID; vCourseScoreCountRecord.CourseName = CourseIDNameDict[CourseID]; if (CourseTeacherNameDict.ContainsKey(CourseID)) { vCourseScoreCountRecord.TeacherName = CourseTeacherNameDict[CourseID]; } // 計算人數與有成績人數 if (CourseSCAttendDict.ContainsKey(CourseID)) { foreach (JHSCAttendRecord rec in CourseSCAttendDict[CourseID]) { vCourseScoreCountRecord.OraTotalEffortCount++; vCourseScoreCountRecord.OraTotalScoreCount++; vCourseScoreCountRecord.OraTotalTextCount++; if (rec.OrdinarilyScore.HasValue) { vCourseScoreCountRecord.OraHasScoreCount++; } if (rec.OrdinarilyEffort.HasValue) { vCourseScoreCountRecord.OraHasEffortCount++; } if (Option.CheckText) { if (!string.IsNullOrEmpty(rec.Text)) { vCourseScoreCountRecord.OraHasTextCount++; } } } } if (Option.DisplayNotFinish == true && Option.CheckText == true) { // 當勾選未輸入與需要檢查文字描述 if (vCourseScoreCountRecord.NonAllInputScore()) { CourseScoreCountEntityListNonInput.Add(vCourseScoreCountRecord); } } else if (Option.DisplayNotFinish == true && Option.CheckText == false) { // 當勾選未輸入,不檢查文字描述 if (vCourseScoreCountRecord.NonInputScore()) { CourseScoreCountEntityListNonInputScore.Add(vCourseScoreCountRecord); } } else { CourseScoreCountEntityList.Add(vCourseScoreCountRecord); } } if (CourseScoreCountEntityListNonInput.Count > 0) { e.Result = CourseScoreCountEntityListNonInput.OrderBy(x => x.CourseName).ToList(); } if (CourseScoreCountEntityListNonInputScore.Count > 0) { e.Result = CourseScoreCountEntityListNonInputScore.OrderBy(x => x.CourseName).ToList(); } if (CourseScoreCountEntityList.Count > 0) { e.Result = CourseScoreCountEntityList.OrderBy(x => x.CourseName).ToList(); } #endregion }