public void UpdateData(ExcelData newData, BackgroundWorker bw) { NeedToBeUpdated = new List <ExcelLicencija>(); bw.ReportProgress(10); //Update changed records for (var i = 0; i < Data.Count; i++) { var newLicencija = newData.Data.Find(x => x.Spaudo_Nr == Data[i].Spaudo_Nr); if (newLicencija != null) { if (!newLicencija.Equals(Data[i])) { Data[i] = newLicencija; } } else { NeedToBeUpdated.Add(Data[i]); } } bw.ReportProgress(40); //Add new records newData.Data.ForEach(x => { if (!Data.Contains(x)) { Data.Add(x); } }); bw.ReportProgress(60); //Update NeedToBeUpdated for (var i = 0; i < NeedToBeUpdated.Count; i++) { var scrap = new Scrap(); var newLicencija = new ExcelLicencija(scrap.RequestRecord(NeedToBeUpdated[i].Spaudo_Nr.Trim())); if (newLicencija != null) { Data[Data.IndexOf(NeedToBeUpdated[i])] = newLicencija; } bw.ReportProgress(i * 40 / NeedToBeUpdated.Count + 60); } NeedToBeUpdated = new List <ExcelLicencija>(); //Negaliojančių licencijų panaikinimas Data = Data.FindAll(x => x.Licencijos_būsena == "Aktyvi").ToList(); bw.ReportProgress(100); }