private void toolStripMenuItemImport_Click(object sender, EventArgs e) { if (openFileDialogImport.ShowDialog() != DialogResult.OK) { return; } try { var rows = new List <DebtRow>(XmlDebtRowsSerializer.Deserialize(openFileDialogImport.FileName)); if (rows.Count == 0) { return; } var existsRows = new List <DebtRow>(DebtDAO.GetDebtRows(rows[0].DebtType, rows[0].Month, rows[0].Year)); if (0 < existsRows.Count) { var answer = MessageBox.Show("Уже существуют строки задолженности такого же типа, месяца и года, как и в файле импорта.\r\nПродолжить импорт?\r\nДа - продолжить импорт, Отмена - прервать импорт.", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (answer == DialogResult.Cancel) { return; } } foreach (var row in rows) { if (existsRows.Exists(r => { return(r.Classifier.Equals(row.Classifier) && r.Subject.Equals(row.Subject)); })) { var answer = MessageBox.Show("Уже существуют строки задолженности с такими же классификатором и субъектом, как и в файле импорта.\r\nПродолжить импорт и перезаписать существующие строки?\r\nДа - продолжить импорт, Отмена - прервать импорт.", Text, MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (answer == DialogResult.Cancel) { return; } break; } } var rowsToSave = new List <DebtRow>(); foreach (var row in rows) { var existsRow = existsRows.Find(r => { return(r.Classifier.Equals(row.Classifier) && r.Subject.Equals(row.Subject)); }); if (existsRow != null) { existsRow.Amount = row.Amount; existsRow.Amount2 = row.Amount2; rowsToSave.Add(existsRow); } else { rowsToSave.Add(row); } } DebtDAO.SaveOrUpdateDebtRows(rowsToSave); debtDocProperties.SetDebtProperties(rows[0].DebtType, rows[0].Month, rows[0].Year); MessageBox.Show(string.Format("Импорт успешно завершен.\r\nФайл импорта: {0}", openFileDialogImport.FileName), Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(string.Format("Ошибка при импорте задолженности, импорт не выполнен.\r\nТекст ошибки: {0}", ex), Text, MessageBoxButtons.OK, MessageBoxIcon.Error); } }