public MyArtistsPageViewModel() { EndListCommand = new WGCommand(_ => { if (TrackedArtists.SelectMany(art => art.ToList()).Count() >= _totalEntries) { return; } this.Services().Notifications.SetProgress(""); Page++; this.ExecuteAsync(__ => { this .BusinessServices() .Tracking .GetTrackedArtists("DavidMelo", Page) .Item2 .ToList() .ForEach(element => { if (TrackedArtists.Select(e => e.Key).Contains(element.Key)) { ReorganizeGroups(element); } else { ExecuteOnDispatcher(() => TrackedArtists.Add(element)); } }); this.ExecuteOnDispatcher(() => this.Services().Notifications.ClearProgressIndicator()); }); }); }
private void ReorganizeGroups(WGGrouping <char, Artist> element) { var oldArtists = TrackedArtists.Where(e => e.Key == element.Key).SelectMany(g => g.ToList()).ToList(); oldArtists.AddRange(element.ToList()); var group = TrackedArtists.Single( e => e.Key == element.Key); var groupindex = TrackedArtists.IndexOf(group); group.Group = oldArtists .GroupBy(a => a.DisplayName.ToLower().First()) .Select(groups => new WGGrouping <char, Artist>(groups)).Single(); ExecuteOnDispatcher(() => TrackedArtists[groupindex] = group); }