zoukankan      html  css  js  c++  java
  • Linq无聊练习系列5--OrderBy ,Groupby练习

     /**************OrderBy ,Groupby练习*******************/
               
                //按学生的总分数按降序排列排序
                var list = from s in ctx.T_Student
                           join c in ctx.T_Score
                           on s.stuNumber
                           equals c.stuNumber
                           into temp
                           from t in temp
                           orderby temp.Sum(k => k.score) descending
                           select new {
                            stuName = s.stuName,
                            scoreSum = temp.Sum(k=>k.score)
                           };
                //对学生的年龄和姓名进行排序
                var list1 = from s in ctx.T_Student
                           orderby s.stuSex,s.stuName descending
                           select s;
                //对于上边的可以用lambda进行简化
                var list2 = ctx.T_Student.OrderBy(s => s.stuAge).ThenBy(k=>k.stuName);
                //也可以用连续的orderBy进行排序,不过级联方式是逆序,上边的list2可以这样表示
                var list3 = ctx.T_Student.OrderBy(s => s.stuName).OrderBy(k=>k.stuAge);
                //对orderby排序要注意的地方是只能对基本数据类型进行排序,不能对类型,以及匿名类进行排序,否则的话会抛异常

                //每门课程分数最高的分数,并按课程号进行排序
                var list4 = from s in ctx.T_Score
                            group s by s.courceNumber
                                into g
                                orderby g.Key
                                select new
                                {
                                    courceNumber = g.Key,
                                    coreForCourse = from f in g
                                                    where f.score == g.Max(n => n.score)
                                                    select f
                                };
                //下面着重对groupby进行案列练习,对分数按课程号进行分组
                var list5 = from s in ctx.T_Score
                            group s by s.courceNumber
                                into temp1
                                select temp1;
                //每门课程的最高分数
                var list6 = from s in ctx.T_Score
                            group s by s.courceNumber
                                into temp1
                                select new {
                                    courseNumber = temp1.Key,
                                    maxCourece = temp1.Max(k=>k.score)
                                };
                //分组的条件也可以是自定义的表达式,如下
                var list7 = from s in ctx.T_Score
                            group s by s.score + 10
                                into g
                                select g;

                //也可以对多列进行分组
                var list8 = from s in ctx.T_Score
                            group s by new
                            {
                                s.courceNumber,
                                s.stuNumber
                            } into g
                            select new {
                                g.Key,
                                g
                            };

  • 相关阅读:
    解决Eclipse中“诡异”的错误:找不到或无法加载主类
    eclipse 中的注释 快捷键 多行注释快捷键 单行注释快捷键
    将Eclipse设置为黑色主题
    Javac提示不是内部或外部命令
    js粒子旋涡
    canvas黑客帝国代码雨特效 | jQuery特效|手机微信网站特效| 网页特效库
    python笔记--冒泡排序升级版
    MySQL5.7(二)数据库的基本操作
    Linux命令应用大词典-第1章 登录、退出、关机和重启
    第1章 Linux命令行简介
  • 原文地址:https://www.cnblogs.com/selfimprove/p/3603758.html
Copyright © 2011-2022 走看看