C# 如何在LINQ中选择多个聚合和非聚合
我有一个TSQL语句,它看起来很简单C# 如何在LINQ中选择多个聚合和非聚合,c#,sql,linq,C#,Sql,Linq,我有一个TSQL语句,它看起来很简单 select qGroup, AVG(score), COUNT(score) from [Scores] where [year] = 2014 and charIndex('s', qGroup, 0) <> 1 group by qGroup 选择qGroup、AVG(分数)、COUNT(分数) 从[分数] 其中【年份】=2014年,charIndex('s',qGroup,0)1 分组 然而,我无法理解如何用LINQ(点表
select qGroup, AVG(score), COUNT(score)
from [Scores]
where [year] = 2014 and charIndex('s', qGroup, 0) <> 1
group by qGroup
选择qGroup、AVG(分数)、COUNT(分数)
从[分数]
其中【年份】=2014年,charIndex('s',qGroup,0)1
分组
然而,我无法理解如何用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>();
List query=context.Scores.Where(p=>(p.schoolID==schoolID)和&(p.Year==Year)和&!(p.qGroup.StartsWith(“S”))。选择(p=>new{p.Average(p2=>p2.Scores),p.qGroup}.GroupBy(p=>p.qGroup.ToList();
我从上面得到的错误如下
“Models.Score”不包含“Average”和“no”的定义
扩展方法“Average”接受类型为的第一个参数
可以找到“Models.Score”(您是否缺少using指令或
装配参考?)
我的灵巧不是很好。。但是。。这似乎比它应该做的更难
请帮助您可以尝试以下方法:
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();
列表查询=
上下文。分数
其中(p=>(p.schoolID==schoolID)&(p.Year==Year)&!(p.qGroup.StartsWith(“S”))
.GroupBy(p=>p.qGroup)
.Select(p=>newqgroupmodel{p.Average(p2=>p2.Score),p.qGroup})
.ToList();
这似乎是在编译<代码>var thisYearScores=scoreRepo.GetAll().Where(p=>(p.schoolID==schoolID)&(p.Year==Year)&!(p.qGroup.StartsWith(“S”).GroupBy(p=>p.qGroup)。Select(p=>new{avgScore=p.Average(p2=>p2.Score),qGroup=p.Select(p3=>p3.qGroup)})代码>