2010-08-11 4 views
2

Я следующие две таблицы:Макс рассчитывать на группе - Entity Framework

1.) Articles - [ArticleID] 
2.) ArticleComments - [CommentID], [ArticleID] 

Я хочу, чтобы получить ArticleID с максимальной NO. комментариев.

ArticleID - 2 
TotalNoOfComments - 15 

Как это сделать в Entity Framework?

Я обращаюсь к сборнику статей, как показано ниже: article.ArticleComments. Следующим будет объект для хранения результата.

public class CommentStats 
{ 
    public int ContextId { get; set; } 
    public int CommentCount { get; set; } 
} 

ответ

2
var query = context.Articles. 
      Select(a => new CommentStats 
            { 
             ContextId = a.Id, 
             CommentCount = a.ArticleComments.Count 
            } 
       ).OrderByDescending(cs => cs.commentCount); 

Вы можете запустить FirstOrDefault для одной статьи с большинством комментариев, или ToList на весь упорядоченный список.

+0

Это похоже на работу :) Спасибо! – user383698

+0

Даже следующие работали одинаково хорошо ... общественного udMostCommented GetMostCommented() { вар комментарии = (this.Fetch(). GroupBy (х => x.ContextId) .OrderByDescending (х => x.Max (у = > x.Count())). FirstOrDefault()); udMostCommented mostCommented = новый udMostCommented { ContextID = comments.FirstOrDefault() ContextID, NumberOfComments = comments.Count() .}; return mostCommented; } Спасибо, в любом случае. – user383698

Смежные вопросы