requête linq pour sélectionner le top 10 des entrées avec la plupart des commentaires de la table
J'ai deux tables "POSTES" et "COMMENTAIRES". Un poste peut avoir de nombreux commentaires et je veux être en mesure de sélectionner le top 10 postes avec le plus grand nombre de commentaires. Le post_id est un FK dans les commentaires de la table. Je suis à l'aide de Linq to SQL. Merci de me conseiller sur la façon de le faire . Merci à l'avance.
MODIFIER
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);
c'est ainsi que ma requête linq ressemble aujourd'hui , sa donne une erreur "de la Séquence d'opérateurs non pris en charge pour le type de Système.String". ". :/
OriginalL'auteur Shane Adrian Muaz | 2012-01-02
Vous devez vous connecter pour publier un commentaire.
Que le message d'erreur est parce que vous appelez
.Count()
sur une propriété de type chaîne (QUEST_TEXT
). Qui compile parce que les cordes sont énumérables. Cependant, Linq-to-SQL ne le comprends pas.Si vous avez de la relation entre les deux tables mappés dans votre fichier DBML, alors vous pouvez l'utiliser dans votre expression:
Toutefois, le code que vous avez posté n'est pas tout à fait correspondre à la description que vous avez donné. Vous mentionnez les commentaires, mais le code parle de réponses.
J'ai changé le code pour afficher
answers
au lieu decomments
, mais cela dépend vraiment de la façon dont votre DBML est mis en place. Êtes-vous à la modélisation de la relation entre ces tables? Si oui, savoir ce que la relation est appelée et l'utiliser.OriginalL'auteur Drew Noakes
Rejoindre
Posts
etComments
, commande parPost.Comment
compter de la descente et de la prendre le top 10.MODIFIER
De vos modifications, il semble que vous essayez de trouver la question avec la plus longue QUEST_TEXT valeur. Si c'est ce que vous avez besoin, il suffit de modifier votre code pour
orderby q.QUEST_TEXT.Length descending
, mais cela ne ressemble pas à ce que vous demandiez.from c in Comments where c.PostId == p.Id
faire?qui rejoint les Observations de la table à la table Posts. La propriété ID noms peuvent être différents dans votre cas et peut être ajusté à tout ce que vous avez défini.
j'ai essayé ceci, mais il me donne une erreur comme "Séquence d'opérateurs non pris en charge pour le type de Système.Chaîne de caractères"." ...J'ai mis à jour la question afin de montrer ma requête maintenant..
Ne pas vous dire
Count()
au lieu deCount
?Noakes oui 😛
OriginalL'auteur scottm