日期:2014-05-20  浏览次数:21313 次

用LINQ进行成绩排名
有一成绩表,字段为:年级、文理科、班级、姓名、总分、班级排名、年级排名。按总分查询出该生在班级的排名和年级的排名(同年级中要分文理)。 LINQ如何写?

------解决方案--------------------
int result=db.TableA.Where(c=>c.score>score).Count()+1;
------解决方案--------------------
探讨
有一成绩表,字段为:年级、文理科、班级、姓名、总分、班级排名、年级排名。按总分查询出该生在班级的排名和年级的排名(同年级中要分文理)。 LINQ如何写?

------解决方案--------------------
你这个问题怎么看怎么别扭。

1.按总分查询??比如按600分来查,这样有可能查出多个学生。应该是按主键来查吧。姓名做主键太弱了吧。
2.同年级中要分文理科??你这张表本来就有年级排名了,应该是在插入数据时就要考虑年级排名分文理科。

------解决方案--------------------
C# code

var q = db.TBL.Where(n => n.姓名 == "Mike" 
                          && n.班级 == "32"
                          && n.年级 == "三年级"
                          && n.文理科 == "文科"
                    ).Select(n => new {n.姓名, n.班级排名, n.年级排名});

------解决方案--------------------
班级排名、年级排名这两个字段根本就不应该有。

难道你没有学过数据库设计范式么?