public static async Task UpdateGalleryAsync(this SQLiteDatabase database, IPictureGallery gallery) { if (!gallery.Id.HasValue) { // If the gallery doesn't have an ID, assume that it's new, and attempt to add it. await database.AddGalleryAsync(gallery); } else { // Update the gallery in the database. IPictureGallery oldGallery = await database.GetGalleryAsync(gallery.Id); IEnumerable <IPicture> deletedPictures = oldGallery.Where(oldPicture => !gallery.Any(picture => oldPicture.Id == picture.Id)); IEnumerable <IPicture> newPictures = gallery.Where(picture => !oldGallery.Any(oldPicture => picture.Id == oldPicture.Id)); foreach (IPicture picture in deletedPictures) { await database.RemovePictureAsync(gallery, picture); } foreach (IPicture picture in newPictures) { await database.AddPictureAsync(gallery, picture); } } }