4 votes

Linq count erreur : DbExpressionBinding nécessite une expression d'entrée avec un ResultType de collection. Nom du paramètre : input

Je suis en train d'essayer d'exécuter la requête linq suivante :

var entries = from entry in _db.Entries
    select new CommentSummary()
    {
         NumberOfComments = entry.Message.Count(),
         UserName = entry.Name
    };

quand j'exécute la requête, elle génère l'erreur suivante : Message=DbExpressionBinding exige une expression en entrée avec un ResultType de collection. Nom du paramètre : input

Si j'utilise

var entries = from entry in _db.Entries
    group entry by entry.Name into groupedByName
    orderby groupedByName.Count() descending
    select new CommentSummary
    {
         NumberOfComments = groupedByName.Count(),
         UserName = groupedByName.Key
    };

il n'y a pas d'erreur, mais les commentaires ne sont pas comptés correctement : toutes les valeurs de NumberOfComments sont "1", alors qu'il devrait y avoir des "1" et des "0". Des idées ? Merci

1voto

Vous devriez utiliser 'by new' après 'group'. J'espère que cela vous aidera.

var entries = from entry in _db.Entries
    group entry by new { entry.Name } into groupedByName
    select new
    {
         groupedByName.Key.Name,
         NumberOfComments = groupedByName.Count(x => x.Name != null)
    };

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X