2010-04-20 5 views
2

J'ai un GroupBy que je regroupe tous les éléments. Je peux voir que les éléments sont présents dans LinqPad mais ne peuvent pas trouver un moyen d'obtenir le nombre.Obtenir le nombre d'éléments dans une requête GroupBy Linq-to-sql?

Voici ce que j'ai jusqu'à présent:

SurveyResponses.Where(q => q.QuestionId == 4) 
    .GroupBy(q => q.AnswerNumeric) 
    .Where(g => g.Key == 1) 

Dans Linq Pad je peux voir, il y a 4 éléments dans cette requête. Si je ne compte retourne 1.

J'ai essayé, ToList().Count, Select(x => x).Count, etc.

Pour être clair, j'ai un IGrouping et besoin pour obtenir le nombre de lui.

Répondre

2

Dans le code que vous avez affiché, vous n'avez pas de IGrouping<int, Response>, vous avez un IEnumerable<IGrouping<int, Response>>. Vous comptez le nombre de regroupements qui correspondent au prédicat Where.

Utilisation Single au lieu de Where pour obtenir le résultat que vous attendez:

int count = SurveyResponses 
    .Where(q => q.QuestionId == 4) 
    .GroupBy(q => q.AnswerNumeric) 
    .Single(g => g.Key == 1) 
    .Count(); 
Questions connexes