linq query zur Auswahl der Top 10 Einträge mit den meisten Kommentaren aus der Tabelle

8

Ich habe zwei Tabellen "POSTS" und "COMMENTS". Ein Beitrag kann viele Kommentare enthalten und ich möchte die 10 besten Beiträge mit der höchsten Anzahl an Kommentaren auswählen können. Die post_id ist ein FK in der Kommentartabelle. Ich benutze Linq zu SQL. Bitte teilen Sie mir mit, wie dies zu tun ist. Vielen Dank im Voraus.

BEARBEITEN

%Vor%

So sieht meine linq-Abfrage jetzt aus, sie gibt einen Fehler aus "Sequenzoperatoren werden für Typ 'System.String' nicht unterstützt.". : /

    
Shane Adrian Muaz 02.01.2012, 15:20
quelle

2 Antworten

29

Diese Fehlermeldung kommt daher, dass Sie .Count() für eine String-Eigenschaft ( QUEST_TEXT ) aufrufen. Das kompiliert, weil Strings aufzählbar sind. Linq-to-SQL versteht das jedoch nicht.

Wenn Sie die Beziehung zwischen den beiden Tabellen in Ihrer DBML-Datei zugeordnet haben, können Sie sie in Ihrem Ausdruck verwenden:

%Vor%

Der von Ihnen gepostete Code entspricht jedoch nicht genau der Beschreibung, die Sie angegeben haben. Sie erwähnen Kommentare, aber der Code spricht über Antworten.

    
Drew Noakes 02.01.2012, 15:47
quelle
3

Treten Sie Posts und Comments bei, sortieren Sie nach Post.Comment count absteigend und nehmen Sie die Top 10.

%Vor%

BEARBEITEN

Bei Ihren Änderungen sieht es so aus, als würden Sie versuchen, die Frage mit dem längsten QUEST_TEXT-Wert zu finden. Wenn Sie das brauchen, ändern Sie einfach Ihren Code in orderby q.QUEST_TEXT.Length descending , aber das klingt nicht so, wie Sie ursprünglich gefragt haben.

    
scottm 02.01.2012 15:26
quelle

Tags und Links