public List <ImportRecord> GetDuplicateIdNumberList() { Dictionary <string, ImportRecord> duplicateList = new Dictionary <string, ImportRecord>(); Dictionary <string, ImportRecord> checkList = new Dictionary <string, ImportRecord>(); foreach (ImportRecord each in _by_identity.Values) { if (string.IsNullOrEmpty(each.IDNumber)) { continue; } // 多加狀態來分別 if (checkList.ContainsKey(each.IDNumber + each.Status)) { duplicateList.Add(each.Identity, each); } else { checkList.Add(each.IDNumber + each.Status, each); } } //將重覆資料的第一筆也加入到 Duplicate 清單中,因為在檢查時會略過第一筆(因為出現第二筆才當重覆)。 List <ImportRecord> copyList = new List <ImportRecord>(duplicateList.Values); foreach (ImportRecord each in copyList) { ImportRecord origin = checkList[each.IDNumber + each.Status]; duplicateList.Add(origin.Identity, origin); } return(new List <ImportRecord>(duplicateList.Values)); }
public void Add(ImportRecord record) { // 加入狀態,不同學生狀態可以有相同學號、身分證號、帳號 _by_identity.Add(record.Identity, record); if (!string.IsNullOrEmpty(record.IDNumber)) { if (!_by_id_number.ContainsKey(record.IDNumber + record.Status)) { _by_id_number.Add(record.IDNumber + record.Status, record); } } if (!string.IsNullOrEmpty(record.StudentNumber)) { if (!_by_student_number.ContainsKey(record.StudentNumber + record.Status)) { _by_student_number.Add(record.StudentNumber + record.Status, record); } } if (!string.IsNullOrEmpty(record.SALoginName)) { if (!_by_login_name.ContainsKey(record.SALoginName + record.Status)) { _by_login_name.Add(record.SALoginName + record.Status, record); } } }