Linq 求平均值,sql语句转换成linq语句

说明 Health ( id 编号、 grade 分数、dormId宿舍编号、time 记录时间 )
求出某个时间段 grade前10 的 宿舍编号 及对应的 平均分数
select top 10 AVG(grade) as grade,dormId from dbo.Health where time between '" + time1 + "' and '" + time2 + "' group by dormId order by grade desc
帮忙把这个sql转换为linq语句,分数不够,帮帮忙,谢谢!

先说明,Linq不一定快的。

Health[] data = new Health[0];//假定你已经取到了Array格式的数据,IEnumerable也行,就这个意思
var result = data.ToArray().GroupBy(s => s.dormId).Select(s => new Health() { dormId = s.Key,grade = s.Average(t=>t.grade) }).OrderByDescending(s=>s.grade).Take(10).ToArray();
//也可以这样
var res = (from s in (from s in data group s.grade by s.dormId) orderby s.Average() descending select new Health() { dormId = s.Key, grade = s.Average() }).Take(10).ToArray();

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答