zoukankan      html  css  js  c++  java
  • 【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() 是先取数据再排除,他们返回的个数不同。

  • 相关阅读:
    [题解] [NOIP2008] 双栈排序——关系的冲突至图论解法
    [搬运] [贪心]NOIP2011 观光公交
    [总结] 最短路径数问题
    [持续更新]一些zyys的题的集合
    [教程]Ubuntu下完整配置自动壁纸切换
    在NOILINUX下的简易VIM配置
    [模板]ST表浅析
    21、Android--RecyclerView
    20、Android--GridView
    19、Android--ListView
  • 原文地址:https://www.cnblogs.com/gosky/p/5756984.html
Copyright © 2011-2022 走看看