Alexandria.Client.Infrastructure.CollectionExtensions.UpdateFrom C# (CSharp) Метод

UpdateFrom() публичный статический Метод

public static UpdateFrom ( this collection, IEnumerable mergeSource ) : void
collection this
mergeSource IEnumerable
Результат void
        public static void UpdateFrom(this ObservableCollection<BookModel> collection, IEnumerable<BookDTO> mergeSource)
        {
            Execute.OnUIThreadAsync(() =>{
                foreach(var bookDTO in mergeSource)
                {
                    var bookModel = collection.FirstOrDefault(model => model.Id == bookDTO.Id);
                    if(bookModel == null)
                    {
                        bookModel = new BookModel
                        {
                            Id = bookDTO.Id
                        };
                        collection.Add(bookModel);
                    }
                    MergeValues(bookModel, bookDTO);
                }
                var toRemove = collection.Where(orig => mergeSource.Any(merged => merged.Id == orig.Id) == false).ToArray();
                foreach(var model in toRemove)
                {
                    collection.Remove(model);
                }
            });
        }