通过Linq-to-sql查询获取组中的项目数?

时间:2010-04-20 19:32:29

标签: linq-to-sql count group-by

我有一个GroupBy,我将所有元素分组。我可以看到LinqPad中的项目,但无法找到计算方法。

这是我到目前为止所做的:

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

在Linq Pad中我可以看到此查询中有4个项目。如果我做Count,它会返回1.

我已经尝试过,ToList().CountSelect(x => x).Count等等。

要清楚,我有一个IGrouping,需要从中得到计数。

1 个答案:

答案 0 :(得分:2)

在您发布的代码中,您没有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();