linq Abfrage select top 10 Beiträge mit den meisten Kommentaren aus der Tabelle
Ich habe zwei Tabellen, "BEITRÄGE" und "KOMMENTARE". Ein post kann beliebig viele Kommentare, und ich möchte in der Lage sein wählen Sie die top-10-Beiträge mit der höchsten Anzahl von Kommentaren. Die post_id ist ein FK in den Kommentaren Tisch. Ich bin mit Linq to SQL. Bitte beraten Sie mich, wie dies zu tun . Vielen Dank im Voraus.
BEARBEITEN
var top = (from q in db.question_tables
from a in db.answer_tables
where q.QUEST_ID.Equals(a.ANS_QUEST_ID)
orderby q.QUEST_TEXT.Count() descending
select new
{
QUEST_TEXT = q.QUEST_TEXT
}).Take(10);
dies ist, wie meine linq-Abfrage jetzt aussieht , seine Angabe ein Fehler "Sequenz-Operatoren nicht unterstützt für Typ" System.String'. ". :/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Fehlermeldung, weil Sie anrufen
.Count()
auf eine string-Eigenschaft (QUEST_TEXT
). Für die Kompilierung, denn strings sind aufzählbar. Jedoch, Linq-to-SQL nicht verstehen.Wenn Sie die Beziehung zwischen den beiden Tabellen abgebildet, die in Ihrem DBML-Datei, dann können Sie es verwenden in Ihrem Ausdruck:
Jedoch den code, den Sie geschrieben hat nicht ganz die Beschreibung, die Sie gab. Sie erwähnen die Kommentare, aber der code spricht über Antworten.
answers
stattcomments
, aber so wirklich hängt davon ab, wie Ihre DBML eingerichtet ist. Sind Sie auf der Modellierung der Beziehung zwischen diesen Tabellen? Wenn ja, finden Sie heraus, was die Beziehung genannt wird und diese verwenden.Join
Posts
undComments
, um durchPost.Comment
zählen absteigende und die die top-10.BEARBEITEN
Von Ihr bearbeitet, es sieht aus wie Sie versuchen, Sie zu finden, die Frage mit der längsten QUEST_TEXT Wert. Wenn es das ist, was Sie brauchen, ändern Sie einfach den code
orderby q.QUEST_TEXT.Length descending
, aber das klingt nicht wie das, was Sie ursprünglich gefragt.from c in Comments where c.PostId == p.Id
tun?Count()
stattCount
?p.Comments
wie Sie Sie haben.