首页 > 其他 > 详细

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

时间:2015-01-31 21:52:28      阅读:278      评论:0      收藏:0      [点我收藏+]

需求:

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

       对一个学院所有教师的总成绩进行统计分析,显示不同分数段(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将成绩按不同分数段进行分组

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!