private IDictionary <int, DraftInfo> GetPagesWithDrafts() { return(cache.GetOrCreate <IDictionary <int, DraftInfo> >("PagesWithDrafts", () => { var drafts = new Dictionary <int, DraftInfo>(); foreach (var draft in FindDrafts()) { if (!draft.Master.ID.HasValue) { continue; } int itemID = draft.Master.ID.Value; if (drafts.ContainsKey(itemID) && drafts[itemID].Saved >= draft.Saved) { continue; } drafts[draft.Master.ID.Value] = new DraftInfo { ItemID = itemID, Saved = draft.Saved, SavedBy = draft.SavedBy, VersionIndex = draft.VersionIndex }; } return drafts; })); }