public void LocalRefresh(List <Challenge> challenges) { try { var current = Challenges.Select(vm => vm.Challenge).ToList(); var comparer = new ChallengeComparer(); var toRemove = current.Except(challenges, comparer).ToList(); var toAdd = challenges.Except(current, comparer).ToList(); toRemove.ForEach(c => Challenges.Remove(Challenges.Single(vm => vm.Challenge == c))); var preSort = new List <ChallengeViewModel>(); toAdd.ForEach(c => preSort.Add(new ChallengeViewModel { Challenge = c })); preSort.Sort(new ChallengeSortComparer()); preSort.ForEach(Challenges.Add); if (Challenges.Count == 0) { Challenges.Add(new ChallengeViewModel() { EmptyMessage = "{0} no challenges for this league".Fmt(Membership.AthleteId == App.CurrentAthlete.Id ? "You have" : "{0} has".Fmt(Membership.Athlete.Alias)) }); } } catch (Exception e) { InsightsManager.Report(e); } }
public override bool Equals(object obj) { var comp = new ChallengeComparer(); return(comp.Equals(this, obj as Challenge)); }