标签:分数 SegmentMark decimal tbExamCourse && 某个 排名 MinusOne tbStudentBasis
linq:OrderByDescending 按指定表达式对集合倒序排序;延迟
第一步:查询出学生成绩表中的数据
using (var db = new SMSPModel.SMSPEntities()) { db.CommandTimeout = 0; var tb = (from p in db.tbExamMark where p.tbExamCourse.ID == this.DrplstExamCourse1.ExamCourseId && p.RecordStatus == decimal.One && p.tbExamCourse.RecordStatus == decimal.One && p.tbExamCourse.tbExamBasis.ID == this.DrplstExam1.ExamId && p.tbExamCourse.tbCourseBasis.RecordStatus == decimal.One && p.tbExamCourse.tbCourseBasis.tbSubjectBasis.RecordStatus == decimal.One && p.tbExamCourse.tbCourseBasis.tbSubjectBasis.tbAreaBasis.RecordStatus == decimal.One && p.tbStudentBasis.RecordStatus == decimal.One && p.tbStudentBasis.StudentStatus == decimal.One orderby p.tbStudentBasis.StudentCode select new ExamMark { StudentId = p.tbStudentBasis.ID, StudentCode = p.tbStudentBasis.StudentCode, StudentName = p.tbStudentBasis.StudentName, ClassName = (from p0 in db.tbClassStudent where p0.RecordStatus == decimal.One && p0.tbStudentBasis.ID == p.tbStudentBasis.ID && p0.tbClassBasis.tbYear.FromDate <= p.tbExamCourse.tbExamBasis.tbYear.FromDate && p0.tbClassBasis.tbYear.ToDate >= p.tbExamCourse.tbExamBasis.tbYear.ToDate && p0.tbClassBasis.tbYear.tbYearGroup.GroupNo == decimal.One select p0.tbClassBasis.ClassName).FirstOrDefault(), AppraiseMark = p.AppraiseMark == decimal.MinusOne ? null : (decimal?)p.AppraiseMark, Mark1 = p.Mark1 == decimal.MinusOne ? null : (decimal?)p.Mark1, Mark2 = p.Mark2 == decimal.MinusOne ? null : (decimal?)p.Mark2, TotalMark = p.TotalMark == decimal.MinusOne ? null : (decimal?)p.TotalMark, TotalGradeRank = p.TotalGradeRank == decimal.MinusOne ? null : (decimal?)p.TotalGradeRank, SegmentMark = p.SegmentMark == decimal.MinusOne ? null : (decimal?)p.SegmentMark, SegmentGradeRank = p.SegmentGradeRank == decimal.MinusOne ? null : (decimal?)p.SegmentGradeRank, LevelName = p.tbExamLevel.LevelName, GetPoint = p.tbExamLevel.LevelValue > decimal.Zero ? p.tbExamCourse.tbCourseBasis.CoursePoint : decimal.Zero, StudyPoint = p.tbExamCourse.tbCourseBasis.CoursePoint * (p.tbExamLevel.LevelName == "---" ? decimal.Zero : p.tbExamLevel.LevelValue) }).Distinct().OrderByDescending(c => c.SegmentMark).ToList();
第二步,根据SegmentMark 综合分 进行排名
//重新排名(综合分排名) var studentScoresRankList = (from p in tb select new ExamMark { StudentId = p.StudentId, StudentCode = p.StudentCode, StudentName = p.StudentName, ClassName = p.ClassName, AppraiseMark = p.AppraiseMark, Mark1 = p.Mark1, Mark2 = p.Mark2, TotalMark = p.TotalMark, TotalGradeRank = p.TotalGradeRank, SegmentMark = p.SegmentMark, LevelName = p.LevelName, GetPoint = p.GetPoint, StudyPoint = p.StudyPoint, SegmentGradeRank = tb.Select(c => c.SegmentMark).ToList().IndexOf(p.SegmentMark) + 1, }).OrderBy(c => c.TotalGradeRank).ToList(); return studentScoresRankList;
然后排名就出来了,然后重新绑定就可以了。
标签:分数,SegmentMark,decimal,tbExamCourse,&&,某个,排名,MinusOne,tbStudentBasis 来源: https://blog.51cto.com/u_15051447/2872270
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。