public void RefreshEntrysCache() { this.EntrysCache.Clear(); Observable.Repeat(this.CreateHatenaDiaryClient()) .Select((client, i) => client.GetEntrys(i + 1)) .TakeWhile(_ => _.Any().First()) .SelectMany(_ => _) .Subscribe(_ => MergeOrAddEntry(_, this.EntrysCache)); } public void RefreshDraftsCache() { this.DraftsCache.Clear(); Observable.Repeat(this.CreateHatenaDiaryClient()) .Select((client, i) => client.GetDrafts(i + 1)) .TakeWhile(_ => _.Any().First()) .SelectMany(_ => _) .Subscribe(_ => MergeOrAddEntry(_, this.DraftsCache)); }