private async void downloadItemList() { var serverDb = new ServerDatabaseService(); List <Models.Item> itemList = new List <Models.Item>(); if (ItemCatalogue == null) { ItemCatalogue = new ObservableCollection <SalesItemSelection>(); } Models.Item temp; foreach (SalesItemSelection item in ItemCatalogue) { temp = new Models.Item(item.ItemId, item.Name, item.Price, item.UnitMeasurement, item.Barcode); itemList.Add(temp); } var fetchedItem = await serverDb.getAllItems(); if (fetchedItem != null) { //compare with local List <Models.Item> fetchedData = new List <Models.Item>(fetchedItem); List <Models.Item> newData = fetchedData.Except(itemList).ToList(); List <Models.Item> deletedData = itemList.Except(fetchedData).ToList(); if (newData != null) { //insert new data to local db await itemDb.InsertItems(new ObservableCollection <Models.Item>(newData)); } if (deletedData != null) { //delete deleted data in local db foreach (Models.Item data in deletedData) { await itemDb.DeleteItem(data); } } loadItemCatalogue(); } }