Получить количество элементов в запросе GroupBy Linq-to-sql? - PullRequest
2 голосов
/ 20 апреля 2010

У меня есть GroupBy, который группирует все элементы. Я вижу, что предметы есть в LinqPad, но не могу найти способ подсчета.

Вот что у меня есть:

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

В Linq Pad я вижу 4 элемента в этом запросе. Если я посчитаю, он вернет 1.

Я пробовал, ToList().Count, Select(x => x).Count и т. Д.

Чтобы было ясно, у меня есть IGrouping, и мне нужно получить счет от него.

1 Ответ

2 голосов
/ 20 апреля 2010

В указанном вами коде у вас нет IGrouping<int, Response>, у вас есть IEnumerable<IGrouping<int, Response>>. Вы подсчитываете количество групп, которые соответствуют предикату Where.

Используйте Single вместо Where, чтобы получить ожидаемый результат:

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