public void Dispose()
        {
            _PersonalMeritRecordInfo.GetEnumerator().Dispose();
            _PersonalDemeritRecordInfo.GetEnumerator().Dispose();
            _MeritDemeritReduceRecord = null;

            GC.SuppressFinalize(this);
        }
        public MeritDeMeritInfo(List<SHStudentRecord> pStudents)
        {
            _PersonalMeritRecordInfo = new Dictionary<string, List<MeritRecord>>();
            _PersonalDemeritRecordInfo = new Dictionary<string, List<DemeritRecord>>();
            _MeritDemeritReduceRecord = MeritDemeritReduce.Select();

            _DemeritAToDemeritB = _MeritDemeritReduceRecord.DemeritAToDemeritB.HasValue ? _MeritDemeritReduceRecord.DemeritAToDemeritB.Value : 0;
            _DemeritBToDemeritC = _MeritDemeritReduceRecord.DemeritBToDemeritC.HasValue ? _MeritDemeritReduceRecord.DemeritBToDemeritC.Value : 0;
            _MeritAToMeritB = _MeritDemeritReduceRecord.MeritAToMeritB.HasValue ? _MeritDemeritReduceRecord.MeritAToMeritB.Value : 0;
            _MeritBToMeritC = _MeritDemeritReduceRecord.MeritBToMeritC.HasValue ? _MeritDemeritReduceRecord.MeritBToMeritC.Value : 0;

            ProduceData(pStudents);
        }