public static int SortBySubjectName(SHSubjectSemesterScoreInfo a, SHSubjectSemesterScoreInfo b) { string a1 = a.SubjectName.Length > 0 ? a.SubjectName.Substring(0, 1) : ""; string b1 = b.SubjectName.Length > 0 ? b.SubjectName.Substring(0, 1) : ""; #region 第一個字一樣的時候 if (a1 == b1) { //if (a.SubjectName.Length > 1 && b.SubjectName.Length > 1) // return SortBySubjectName(a, b); //else return(a.SubjectName.Length.CompareTo(b.SubjectName.Length)); } #endregion #region 第一個字不同,分別取得在設定順序中的數字,如果都不在設定順序中就用單純字串比較 int ai = getIntForSubject(a1), bi = getIntForSubject(b1); if (ai > 0 || bi > 0) { return(ai.CompareTo(bi)); } else { return(a1.CompareTo(b1)); } #endregion }
// 收集學生修習科目學期成績資料 private void ProducePersonalSubjectSemesterScoreInfo(Dictionary <string, SHSubjectSemesterScoreInfo> pPersonalSubjectSemesterScoreInfo, SHSchool.Data.SHSubjectScore pSubjectScore, int?pGradeYear) { string key = pSubjectScore.RefStudentID + "_" + pSubjectScore.SchoolYear.ToString() + "_" + pSubjectScore.Semester.ToString() + "_" + pSubjectScore.Subject + "_" + ((pSubjectScore.Level.HasValue) ? pSubjectScore.Level.ToString() : ""); SHSubjectSemesterScoreInfo SHSSSI = pPersonalSubjectSemesterScoreInfo[key]; SHSSSI.StudentID = pSubjectScore.RefStudentID; SHSSSI.SchoolYear = pSubjectScore.SchoolYear; SHSSSI.Semester = pSubjectScore.Semester; SHSSSI.Entry = pSubjectScore.Entry; SHSSSI.SubjectName = pSubjectScore.Subject; SHSSSI.Level = pSubjectScore.Level; SHSSSI.Score = pSubjectScore.Score; SHSSSI.ReExamScore = pSubjectScore.ScoreReExam; SHSSSI.ReCourseScore = pSubjectScore.ScoreReCourse; SHSSSI.ManualScore = pSubjectScore.ScoreBetter; SHSSSI.SchoolYearAdjustScore = pSubjectScore.ScoreSchoolYearAdjust; SHSSSI.Credit = pSubjectScore.Credit; //SHSSSI.ProgramCredit = GetPersonalSubjectCreditUsingProgramPlan(_StudentProgramPlan[pSubjectScore.RefStudentID], pSubjectScore.Subject, pSubjectScore.Level); SHSSSI.RequiredBy = pSubjectScore.RequiredBy; //SHSSSI.ProgramRequiredBy = string.Empty; SHSSSI.Required = pSubjectScore.Required; //SHSSSI.ProgramRequired = ; //SHSSSI.ProgramBranchType = string.Empty; SHSSSI.CoreSubject = IsCoreSubject(pSubjectScore.Subject, pSubjectScore.Level); SHSSSI.NotIncludedInCredit = pSubjectScore.NotIncludedInCredit; SHSSSI.NotIncludedInCalc = pSubjectScore.NotIncludedInCalc; SHSSSI.Comment = pSubjectScore.Comment; SHSSSI.Pass = pSubjectScore.Pass; SHSSSI.GradeYear = pGradeYear; if (!_PersonalAllSemesterSubjectScoreInfo.ContainsKey(pSubjectScore.RefStudentID)) { _PersonalAllSemesterSubjectScoreInfo.Add(pSubjectScore.RefStudentID, new List <SHSubjectSemesterScoreInfo>()); } _PersonalAllSemesterSubjectScoreInfo[pSubjectScore.RefStudentID].Add(SHSSSI); }
public static int SortBySubjectName(SHSubjectSemesterScoreInfo a, SHSubjectSemesterScoreInfo b) { string a1 = a.SubjectName.Length > 0 ? a.SubjectName.Substring(0, 1) : ""; string b1 = b.SubjectName.Length > 0 ? b.SubjectName.Substring(0, 1) : ""; #region 第一個字一樣的時候 if (a1 == b1) { //if (a.SubjectName.Length > 1 && b.SubjectName.Length > 1) // return SortBySubjectName(a, b); //else return a.SubjectName.Length.CompareTo(b.SubjectName.Length); } #endregion #region 第一個字不同,分別取得在設定順序中的數字,如果都不在設定順序中就用單純字串比較 int ai = getIntForSubject(a1), bi = getIntForSubject(b1); if (ai > 0 || bi > 0) return ai.CompareTo(bi); else return a1.CompareTo(b1); #endregion }
public List<SHSubjectSemesterScoreInfo> SortSHSubjectSemesterScore(List<SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo, List<SHSubjectSemesterScoreInfo> secondSemesterSubjectScoreInfo) { SHSubjectSemesterScoreInfo[] byteSecondSemesterSubjectScoreInfo = new List<SHSubjectSemesterScoreInfo>().ToArray(); if (secondSemesterSubjectScoreInfo != null && secondSemesterSubjectScoreInfo.Count>0) byteSecondSemesterSubjectScoreInfo = secondSemesterSubjectScoreInfo.ToArray(); List<SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List<SHSubjectSemesterScoreInfo>(); if ((firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0) && (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0)) return new List<SHSubjectSemesterScoreInfo>(); if (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0) return firstSemesterSubjectScoreInfo; if (firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0) return secondSemesterSubjectScoreInfo; int j = 0; SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo(); foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo) { bool found = false; for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++) { s2 = (byteSecondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo); if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear)) { found = true; reSortedSecondSemesterSubjectScoreInfo.Add(s2); byteSecondSemesterSubjectScoreInfo.SetValue(byteSecondSemesterSubjectScoreInfo.GetValue((byteSecondSemesterSubjectScoreInfo.Length - 1 - j)), i); byteSecondSemesterSubjectScoreInfo.SetValue(s2, (byteSecondSemesterSubjectScoreInfo.Length - 1 - j)); j++; } } if (!found) { SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo(); _SHSubjectSemesterScoreInfo.SubjectName = string.Empty; _SHSubjectSemesterScoreInfo.StudentID = s2.StudentID; _SHSubjectSemesterScoreInfo.Semester = s2.Semester; _SHSubjectSemesterScoreInfo.Score = null; _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null; _SHSubjectSemesterScoreInfo.SchoolYear = s2.SchoolYear; _SHSubjectSemesterScoreInfo.RequiredBy = string.Empty; _SHSubjectSemesterScoreInfo.Required = null; _SHSubjectSemesterScoreInfo.ReExamScore = null; _SHSubjectSemesterScoreInfo.ReCourseScore = null; _SHSubjectSemesterScoreInfo.Pass = null; _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null; _SHSubjectSemesterScoreInfo.NotIncludedInCalc = null; _SHSubjectSemesterScoreInfo.ManualScore = null; _SHSubjectSemesterScoreInfo.Level = null; _SHSubjectSemesterScoreInfo.Entry = string.Empty; _SHSubjectSemesterScoreInfo.Credit = null; _SHSubjectSemesterScoreInfo.CoreSubject = false; _SHSubjectSemesterScoreInfo.Comment = string.Empty; _SHSubjectSemesterScoreInfo.GradeYear = null; _SHSubjectSemesterScoreInfo.ProSubject = false; reSortedSecondSemesterSubjectScoreInfo.Add(_SHSubjectSemesterScoreInfo); } } for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++) { reSortedSecondSemesterSubjectScoreInfo.Add(byteSecondSemesterSubjectScoreInfo[i]); } return reSortedSecondSemesterSubjectScoreInfo; }
/// <summary> /// 由上學期科目取得下學期科目 /// </summary> /// <param name="pStudentID">學生系統編號</param> /// <param name="pSchoolYear">學年度</param> /// <returns>個人與上學期對齊之下學期科目成績資訊</returns> public List<SHSubjectSemesterScoreInfo> GetPersonal2ndSemesterSubjectScoreInfo(string pStudentID, int pSchoolYear1, int pSchoolYear2, int pSemester1, int pSemester2) { string keyFirstSemester = pStudentID + "_" + pSchoolYear1.ToString() + "_" + pSemester1.ToString(); string keySecondSemester = pStudentID + "_" + pSchoolYear2.ToString() + "_" + pSemester2.ToString(); if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keyFirstSemester)) return null; if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keySecondSemester)) return null; List<SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keyFirstSemester]; SHSubjectSemesterScoreInfo[] secondSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keySecondSemester].ToArray(); List<SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List<SHSubjectSemesterScoreInfo>(); if (secondSemesterSubjectScoreInfo.Length == 0) return null; int j = 0; foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo) { bool found = false; SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo(); for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length - j); i++) { s2 = (secondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo); if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear)) { found = true; reSortedSecondSemesterSubjectScoreInfo.Add(s2); secondSemesterSubjectScoreInfo.SetValue(secondSemesterSubjectScoreInfo.GetValue((secondSemesterSubjectScoreInfo.Length - 1 - j)), i); secondSemesterSubjectScoreInfo.SetValue(s2, (secondSemesterSubjectScoreInfo.Length - 1 - j)); j++; } } if (!found) { SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo(); _SHSubjectSemesterScoreInfo.SubjectName = string.Empty; _SHSubjectSemesterScoreInfo.StudentID = pStudentID; _SHSubjectSemesterScoreInfo.Semester = s2.Semester; _SHSubjectSemesterScoreInfo.Score = null; _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null; _SHSubjectSemesterScoreInfo.SchoolYear = s2.SchoolYear; _SHSubjectSemesterScoreInfo.RequiredBy = string.Empty; _SHSubjectSemesterScoreInfo.Required = null; _SHSubjectSemesterScoreInfo.ReExamScore = null; _SHSubjectSemesterScoreInfo.ReCourseScore = null; _SHSubjectSemesterScoreInfo.Pass = null; _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null; _SHSubjectSemesterScoreInfo.NotIncludedInCalc = null; _SHSubjectSemesterScoreInfo.ManualScore = null; _SHSubjectSemesterScoreInfo.Level = null; _SHSubjectSemesterScoreInfo.Entry = string.Empty; _SHSubjectSemesterScoreInfo.Credit = null; _SHSubjectSemesterScoreInfo.CoreSubject = false; _SHSubjectSemesterScoreInfo.Comment = string.Empty; _SHSubjectSemesterScoreInfo.GradeYear = null; _SHSubjectSemesterScoreInfo.ProSubject = false; reSortedSecondSemesterSubjectScoreInfo.Add(s2); } } for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length-j); i++) { reSortedSecondSemesterSubjectScoreInfo.Add(secondSemesterSubjectScoreInfo[i]); } return reSortedSecondSemesterSubjectScoreInfo; }
/// <summary> /// 由上學期科目取得下學期科目 /// </summary> /// <param name="pStudentID">學生系統編號</param> /// <param name="pSchoolYear">學年度</param> /// <returns>個人與上學期對齊之下學期科目成績資訊</returns> public List <SHSubjectSemesterScoreInfo> GetPersonal2ndSemesterSubjectScoreInfo(string pStudentID, int pSchoolYear1, int pSchoolYear2, int pSemester1, int pSemester2) { string keyFirstSemester = pStudentID + "_" + pSchoolYear1.ToString() + "_" + pSemester1.ToString(); string keySecondSemester = pStudentID + "_" + pSchoolYear2.ToString() + "_" + pSemester2.ToString(); if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keyFirstSemester)) { return(null); } if (!_PersonalSemesterSubjectScoreInfo.ContainsKey(keySecondSemester)) { return(null); } List <SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keyFirstSemester]; SHSubjectSemesterScoreInfo[] secondSemesterSubjectScoreInfo = _PersonalSemesterSubjectScoreInfo[keySecondSemester].ToArray(); List <SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List <SHSubjectSemesterScoreInfo>(); if (secondSemesterSubjectScoreInfo.Length == 0) { return(null); } int j = 0; foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo) { bool found = false; SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo(); for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length - j); i++) { s2 = (secondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo); if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear)) { found = true; reSortedSecondSemesterSubjectScoreInfo.Add(s2); secondSemesterSubjectScoreInfo.SetValue(secondSemesterSubjectScoreInfo.GetValue((secondSemesterSubjectScoreInfo.Length - 1 - j)), i); secondSemesterSubjectScoreInfo.SetValue(s2, (secondSemesterSubjectScoreInfo.Length - 1 - j)); j++; } } if (!found) { SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo(); _SHSubjectSemesterScoreInfo.SubjectName = string.Empty; _SHSubjectSemesterScoreInfo.StudentID = pStudentID; _SHSubjectSemesterScoreInfo.Semester = s2.Semester; _SHSubjectSemesterScoreInfo.Score = null; _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null; _SHSubjectSemesterScoreInfo.SchoolYear = s2.SchoolYear; _SHSubjectSemesterScoreInfo.RequiredBy = string.Empty; _SHSubjectSemesterScoreInfo.Required = null; _SHSubjectSemesterScoreInfo.ReExamScore = null; _SHSubjectSemesterScoreInfo.ReCourseScore = null; _SHSubjectSemesterScoreInfo.Pass = null; _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null; _SHSubjectSemesterScoreInfo.NotIncludedInCalc = null; _SHSubjectSemesterScoreInfo.ManualScore = null; _SHSubjectSemesterScoreInfo.Level = null; _SHSubjectSemesterScoreInfo.Entry = string.Empty; _SHSubjectSemesterScoreInfo.Credit = null; _SHSubjectSemesterScoreInfo.CoreSubject = false; _SHSubjectSemesterScoreInfo.Comment = string.Empty; _SHSubjectSemesterScoreInfo.GradeYear = null; _SHSubjectSemesterScoreInfo.ProSubject = false; reSortedSecondSemesterSubjectScoreInfo.Add(s2); } } for (int i = 0; i < (secondSemesterSubjectScoreInfo.Length - j); i++) { reSortedSecondSemesterSubjectScoreInfo.Add(secondSemesterSubjectScoreInfo[i]); } return(reSortedSecondSemesterSubjectScoreInfo); }
public List <SHSubjectSemesterScoreInfo> SortSHSubjectSemesterScore(List <SHSubjectSemesterScoreInfo> firstSemesterSubjectScoreInfo, List <SHSubjectSemesterScoreInfo> secondSemesterSubjectScoreInfo) { SHSubjectSemesterScoreInfo[] byteSecondSemesterSubjectScoreInfo = new List <SHSubjectSemesterScoreInfo>().ToArray(); if (secondSemesterSubjectScoreInfo != null && secondSemesterSubjectScoreInfo.Count > 0) { byteSecondSemesterSubjectScoreInfo = secondSemesterSubjectScoreInfo.ToArray(); } List <SHSubjectSemesterScoreInfo> reSortedSecondSemesterSubjectScoreInfo = new List <SHSubjectSemesterScoreInfo>(); if ((firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0) && (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0)) { return(new List <SHSubjectSemesterScoreInfo>()); } if (secondSemesterSubjectScoreInfo == null || secondSemesterSubjectScoreInfo.Count == 0) { return(firstSemesterSubjectScoreInfo); } if (firstSemesterSubjectScoreInfo == null || firstSemesterSubjectScoreInfo.Count == 0) { return(secondSemesterSubjectScoreInfo); } int j = 0; SHSubjectSemesterScoreInfo s2 = new SHSubjectSemesterScoreInfo(); foreach (SHSubjectSemesterScoreInfo s1 in firstSemesterSubjectScoreInfo) { bool found = false; for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++) { s2 = (byteSecondSemesterSubjectScoreInfo.GetValue(i) as SHSubjectSemesterScoreInfo); if ((s1.SubjectName.Trim() == s2.SubjectName.Trim()) && (s1.GradeYear.HasValue && s2.GradeYear.HasValue && s1.GradeYear == s2.GradeYear)) { found = true; reSortedSecondSemesterSubjectScoreInfo.Add(s2); byteSecondSemesterSubjectScoreInfo.SetValue(byteSecondSemesterSubjectScoreInfo.GetValue((byteSecondSemesterSubjectScoreInfo.Length - 1 - j)), i); byteSecondSemesterSubjectScoreInfo.SetValue(s2, (byteSecondSemesterSubjectScoreInfo.Length - 1 - j)); j++; } } if (!found) { SHSubjectSemesterScoreInfo _SHSubjectSemesterScoreInfo = new SHSubjectSemesterScoreInfo(); _SHSubjectSemesterScoreInfo.SubjectName = string.Empty; _SHSubjectSemesterScoreInfo.StudentID = s2.StudentID; _SHSubjectSemesterScoreInfo.Semester = s2.Semester; _SHSubjectSemesterScoreInfo.Score = null; _SHSubjectSemesterScoreInfo.SchoolYearAdjustScore = null; _SHSubjectSemesterScoreInfo.SchoolYear = s2.SchoolYear; _SHSubjectSemesterScoreInfo.RequiredBy = string.Empty; _SHSubjectSemesterScoreInfo.Required = null; _SHSubjectSemesterScoreInfo.ReExamScore = null; _SHSubjectSemesterScoreInfo.ReCourseScore = null; _SHSubjectSemesterScoreInfo.Pass = null; _SHSubjectSemesterScoreInfo.NotIncludedInCredit = null; _SHSubjectSemesterScoreInfo.NotIncludedInCalc = null; _SHSubjectSemesterScoreInfo.ManualScore = null; _SHSubjectSemesterScoreInfo.Level = null; _SHSubjectSemesterScoreInfo.Entry = string.Empty; _SHSubjectSemesterScoreInfo.Credit = null; _SHSubjectSemesterScoreInfo.CoreSubject = false; _SHSubjectSemesterScoreInfo.Comment = string.Empty; _SHSubjectSemesterScoreInfo.GradeYear = null; _SHSubjectSemesterScoreInfo.ProSubject = false; reSortedSecondSemesterSubjectScoreInfo.Add(_SHSubjectSemesterScoreInfo); } } for (int i = 0; i < (byteSecondSemesterSubjectScoreInfo.Length - j); i++) { reSortedSecondSemesterSubjectScoreInfo.Add(byteSecondSemesterSubjectScoreInfo[i]); } return(reSortedSecondSemesterSubjectScoreInfo); }