• 【EF学习笔记11】----------查询中常用的扩展方法


    先来看一下我们的表结构:

    首先毫无疑问的要创建我们的上下文对象:

    using (var db = new Entities())
    {
        //执行操作
    }

    Average 平均值:

    //查询平均分
    Console.WriteLine("平均分:"+db.Student.Average(v=>v.Score));

    Max 最大值:

    //查询最高分
    Console.WriteLine("最高分:"+db.Student.Max(v=>v.Score));

    Min 最小值:

    //查询最低分
    Console.WriteLine("最低分:"+db.Student.Min(v=>v.Score));

    Sum 求和:

    //查询总分
    Console.WriteLine("总分:"+db.Student.Sum(v=>v.Score));

    Count 数量:

    //查询学生个数
    Console.WriteLine("个数:"+db.Student.Count());

    执行结果:

    Contains 包含:

    //查询名字中包含 小 字的学生
    Console.WriteLine("=====打印所哟名字包含 小 的学生=====");
    var query = db.Student.Where(v => v.StudentName.Contains(""));
    foreach(var st in query)
    {
        Console.WriteLine(st.StudentName);
    }

    Distinct 去重:

    //去重复
    Console.WriteLine("=====打印所有学生分数 去重=====");
    var query2 = db.Student.Select(v=>v.Score).Distinct();
    foreach (var st in query2)
    {
        Console.WriteLine(st);
    }

    执行结果:

    Take 取出指定个数

    //查询前3条记录
    Console.WriteLine("=====查询前几条记录==========");
    var query3 = db.Student.Take(3);
    foreach (var st in query3)
    {
        Console.WriteLine(st.StudentID+" "+st.StudentName);
    }

    Skip 跳过指定个数

    //跳过前3条记录
    Console.WriteLine("======跳过前N条记录=======");
    var query4 = db.Student.OrderBy(v=>v.StudentID).Skip(3); //调用Skip方法之前必须使用 OrderBy排序 否则报错。
    foreach (var st in query4)
    {
        Console.WriteLine(st.StudentID + " " + st.StudentName);
    }

    结合使用 Skip 和 Take

    //查询3-6条记录
    Console.WriteLine("=====查询2-4条记录==========");
    var query5 = db.Student.OrderBy(v=>v.StudentID).Take(4).Skip(1);//先取出4条记录 --> 再 排除1条 共3条
    foreach (var st in query5)
    {
        Console.WriteLine(st.StudentID + " " + st.StudentName);
    }

    颠倒顺序,结果不同:

    //查询3-6条记录
    Console.WriteLine("=====查询2-5条记录==========");
    var query6 = db.Student.OrderBy(v => v.StudentID).Skip(1).Take(4);//先排除1条 --> 再取出4条记录 共4条
    foreach (var st in query6)
    {
        Console.WriteLine(st.StudentID + " " + st.StudentName);
    }

    说明: Skip().Take() 是先排除,再取数据。 Take().Skip() 是先取数据再排除,他们返回的个数不同。

  • 相关阅读:
    MySQL binlog中 format_desc event格式解析
    位bit和字节Byte
    MySQL利用mysqlbinlog模拟增量恢复
    mysqldump参数 --master-data详解
    开启MySQL二进制日志
    设置花里胡哨的Xshell字体与背景颜色(超全)
    Python操作MySQL数据库
    给定一个由括号([{)]}其中之一或多个组成的字符串判断是否符合左右括号成对标准,不同括号可任意嵌套
    给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)
    不使用局部变量和for循环或其它循环打印出如m=19,n=2結果为2 4 8 16 16 8 4 2形式的串
  • 原文地址:https://www.cnblogs.com/gosky/p/5756984.html
Copyright © 2020-2023  润新知