Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在LINQ中选择多个聚合和非聚合_C#_Sql_Linq - Fatal编程技术网

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

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(点表

我有一个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(点表示法)来表达这一点

这是我失败的尝试

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)})