/// <summary>
        /// 是否為相同科目
        /// </summary>
        private bool CheckSubject(SubjectObj each, SHSubjectScore subjectscore)
        {
            if (each.kcbs_sore.subject == subjectscore.Subject.Trim())
            {
                if (subjectscore.Level.HasValue)
                {
                    if (each.kcbs_sore.subject_level == subjectscore.Level.Value.ToString())
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
        private void btnChangeSubject_Click(object sender, System.EventArgs e)
        {
            //if (record.Subjects.ContainsKey(Subject))
            //{
            //    //strLog.AppendLine(record.ID,record.Student.StudentNumber,);
            //    SHSubjectScore Score = record.Subjects[Subject];
            //    record.Subjects.Remove(Subject);
            //    Score.Subject = ChangeSubject;
            //    record.Subjects.Add(Score.Subject, Score);
            //}

            if (!IsInput() && !string.IsNullOrEmpty(txtChangeSubject.Text))
            {
                MessageBox.Show("請完整輸入欄位資訊!");
                return;
            }

            int a;

            if (!(int.TryParse(txtChangeLevel.Text, out a) || string.IsNullOrEmpty(txtChangeLevel.Text)))
            {
                MessageBox.Show("級別必需為數字或空白!");
                return;
            }

            int    SchoolYear    = K12.Data.Int.Parse("" + cmbSchoolYear.SelectedItem);
            int    Semester      = K12.Data.Int.Parse("" + cmbSemester.SelectedItem);
            int?   Level         = K12.Data.Int.ParseAllowNull("" + cmbLevels.SelectedItem);
            int?   ChangeLevel   = K12.Data.Int.ParseAllowNull("" + txtChangeLevel.Text);
            string Subject       = "" + cmbSubjects.SelectedItem;
            string ChangeSubject = txtChangeSubject.Text;

            strLog = new StringBuilder();
            strLog.AppendLine("『更改學期科目名稱』");
            int UpdateCount = 0;

            List <SHSemesterScoreRecord> FinalUpdateRecords = new List <SHSemesterScoreRecord>();

            UpdateRecords = StudentScores.Where(x => x.SchoolYear == SchoolYear && x.Semester == Semester).ToList();

            foreach (SHSemesterScoreRecord record in UpdateRecords)
            {
                List <string> UpdateSubjects = new List <string>();

                foreach (SHSubjectScore SubjectScore in record.Subjects.Values)
                {
                    if (SubjectScore.Subject.Equals(Subject) && K12.Data.Int.GetString(SubjectScore.Level) == K12.Data.Int.GetString(Level))
                    {
                        UpdateSubjects.Add(SubjectScore.Subject);
                        UpdateCount++;
                    }
                }

                if (UpdateSubjects.Count > 0)
                {
                    FinalUpdateRecords.Add(record);
                    strLog.AppendLine("系統編號:" + record.ID + ",學生編號:" + record.RefStudentID + ",學生學號:" + record.Student.StudentNumber + ",學生姓名:" + record.Student.Name + ",學年度:" + record.SchoolYear + ",學期:" + record.Semester + ",更新後科目名稱:" + ChangeSubject);
                }

                foreach (string UpdateSubject in UpdateSubjects)
                {
                    strLog.AppendLine(record.Subjects[UpdateSubject].ToXML().OuterXml);

                    SHSubjectScore Score = record.Subjects[UpdateSubject];

                    record.Subjects.Remove(UpdateSubject);

                    Score.Subject = ChangeSubject;
                    Score.Level   = ChangeLevel;

                    record.Subjects.Add(Score.Subject, Score);
                }
            }

            int SuccessCount = 0;

            if (K12.Data.Utility.Utility.IsNullOrEmpty(FinalUpdateRecords))
            {
                MessageBox.Show("沒有資料不需更新!!");
                return;
            }

            if (MessageBox.Show("與您確認是否要更新總共" + UpdateCount + "筆成績?提醒在更新前先備份該位學生所有學期科目成績,並在成功後備份『更新紀錄』。", "更新學期科目成績確認", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                try
                {
                    SuccessCount = SHSemesterScore.Update(FinalUpdateRecords);
                    MessageBox.Show("成功更新筆數:" + UpdateCount);
                    txtLog.Text = txtLog.Text + strLog.ToString();
                    FISCA.LogAgent.ApplicationLog.Log("成績模組.學期科目成績資料維護", strLog.ToString());
                    SelectByCondition();
                }
                catch (Exception ve)
                {
                    MessageBox.Show(ve.Message);
                    txtLog.Text = txtLog.Text + ve.Message;
                }
                finally
                {
                }
            }
        }