public IList <TagCount> GetTagCounts() { try { IEnumerable <PageTag> pagesTags = _dataContext.GetPagesTags(); IEnumerable <IGrouping <CmsTag, PageTag> > groupedTagsPages = from pt in pagesTags group pt by pt.Tag into g select g; var groupedTagsCount = from rr in groupedTagsPages select new { Tag = rr.Key, Count = rr.Count() }; var tagCount = new List <TagCount>(groupedTagsCount.Count()); tagCount.AddRange( groupedTagsCount.Select(pageTags => new TagCount { Tag = pageTags.Tag, Count = pageTags.Count })); return(tagCount); } catch (Exception ex) { _log.Exception(ex); throw; } }