如何在LINQ中选择多个聚合和非聚合

本文关键字:选择 LINQ | 更新日期: 2023-09-27 18:11:37

我有这个TSQL语句看起来很简单

select qGroup, AVG(score), COUNT(score)
  from [Scores]
  where [year] = 2014 and charIndex('s', qGroup, 0) <> 1
  group by qGroup

然而,我就是不知道如何在LINQ(点表示法)中表达这个

这是我失败的尝试

List<qGroupModel> query = context.Scores.Where(p => (p.schoolID == schoolID) && (p.Year == year) && !(p.qGroup.StartsWith("S"))).Select(p => new { p.Average(p2 => p2.Score), p.qGroup }).GroupBy(p => p.qGroup).ToList<qGroupModel>();

我从上面得到的错误如下

"模型。"得分"不包含"平均"的定义,没有扩展方法'Average'接受类型为的第一个参数"模型。可以找到Score'(您是否缺少using指令或装配参考?)

我的LINQ敏锐度不是很好…但还是. .这似乎比它应该的更难。

请帮

如何在LINQ中选择多个聚合和非聚合

您可以这样尝试:

List<qGroupModel> query = 
                    context.Scores
                           .Where(p => (p.schoolID == schoolID) && (p.Year == year) && !(p.qGroup.StartsWith("S")))
                           .GroupBy(p => p.qGroup)
                           .Select(p => new qGroupModel { p.Average(p2 => p2.Score), p.qGroup })
                           .ToList();