码迷,mamicode.com
首页 > 其他好文 > 详细

用Linq将成绩按不同分数段进行分组

时间:2015-01-31 21:53:54      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:linq   分组   

需求:

       评教系统中有一个模块是对教师的成绩进行图表分析。其中一个具体的需求是:

       对一个学院所有教师的总成绩进行统计分析,显示不同分数段(0~59,60~69,70~79,80~89,90~100)各占多少人,从而直观地展现整个学院教师受学生欢迎程度。

问题:

       我通过底层方法,返回一个集合,这个集合中每个实体包括教师姓名,总成绩等属性。

       说到分组,首先想到了GroupBy,但是查看帮助文档,不能达到我的目的。

       最后,终于形成了以下的Linq语句。在LinqPad中执行一下。

解决:

from s in EvaluationAssessScoreEntities
orderby s.Score descending//按成绩降序排列
let temp1 = (s.Score) / 10 //把所有成绩转化成10以内的数
let temp2 = temp1 - 5.999  //再把成绩分成两份,一份为小于等于5.999的负数,一份大于5.99的正数
let temp3 = Math.Max(temp2, 0)//把上述成绩中的负数转化成0,正数不变0-1/1-2/2-3/3-4/4-5
let temp4 = (int)(69 - temp3)//通过取整方式0变成69,0-1的变成68,1-2的变成67,2-3的对应66,3-4的对应65,4-5的对应64
group s by temp4 into g //更具以上5个数分组
orderby g.Key descending 
select g
//select new { Name = g.Key, Y = g.Count() }

效果图:

                         技术分享

                                                 技术分享




用Linq将成绩按不同分数段进行分组

标签:linq   分组   

原文地址:http://blog.csdn.net/u010924834/article/details/43346557

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!