public virtual async Task <IEnumerable <BaseComment <TUserPk> > > GetLastCommentsAsync <TContent>(Site site, int count) where TContent : class, IContentItem { var comments = await GetDbSet().Where(c => c.SiteIds.Contains(site.Id) && c.ContentType == EntityExtensions.GetKey <TContent>()) .OrderByDescending(c => c.DateUpdated).Take(count).ToListAsync(); var authors = await _userDataProvider.GetDataAsync(comments.Select(c => c.AuthorId).ToArray()); var groups = comments.GroupBy(c => c.ContentType); foreach (var group in groups) { var contentIds = comments.Select(c => c.ContentId).Distinct().ToList(); var contentItems = await DbContext.Set <TContent>().Where(c => contentIds.Contains(c.Id)).ToListAsync(); foreach (var comment in group) { comment.Author = authors.FirstOrDefault(a => a.Id.Equals(comment.AuthorId)); comment.ContentItem = contentItems.FirstOrDefault(a => a.Id == comment.ContentId); } } return(comments); }