2 Stimmen

Maximale Anzahl bei Gruppierung nach - Entity Framework

Ich habe folgende zwei Tabellen:

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

Ich möchte die ArticleID mit der maximalen Anzahl von Kommentaren abrufen, z.B.

ArticleID - 2
TotalNoOfComments - 15

Wie mache ich das in Entity Framework?

Ich greife auf die ArticleComments-Sammlung wie folgt zu: article.ArticleComments. Das folgende wird das Objekt sein, das das Ergebnis speichert.

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

2voto

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

Sie können dann FirstOrDefault für den einen Artikel mit den meisten Kommentaren, oder ToList für die gesamte geordnete Liste.

0 Stimmen

Auch folgendes funktionierte gleich gut... public udMostCommented GetMostCommented() { var comments = (this.Fetch().GroupBy(x => x.ContextId).OrderByDescending(x => x.Max(y => x.Count())). FirstOrDefault()); udMostCommented mostCommented = new udMostCommented { ContextID = comments.FirstOrDefault().ContextId, NumberOfComments = comments.Count() }; return mostCommented; } Trotzdem vielen Dank.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X