public IEnumerable <IProjectTag> GetAllTags(bool liveOnly = false) { if (!liveOnly) { return(Tag.GetTags("project").Where(x => x.NodeCount > 2).Select(x => new ProjectTag() { Id = x.Id, Text = x.TagCaption, LiveCount = x.NodeCount })); } var tagList = new List <IProjectTag>(); var nodeListingProvider = new NodeListingProvider(); var projects = nodeListingProvider.GetAllListings(true); foreach (var p in projects) { foreach (var t in p.Tags) { if (tagList.Contains(t)) { tagList.Find(delegate(IProjectTag tag) { return(tag.Id == t.Id); }).LiveCount++; } else { t.LiveCount++; tagList.Add(t); } } } return(tagList); }