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
                        };

转载于:https://www.cnblogs.com/selfimprove/p/3603758.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值