entity framework 新手入门篇(3)-entity framework实现orderby,count,groupby,like,in,分页等

前面我们已经学习了entityframework的基本的增删改查,今天,我们将在EF中实现一些更加贴近于实际功能的SQL方法。

承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller表。

在本次学习之前,我们先要了解一个神奇的接口,iqueryable这个接口类似于ienumable,但并不完全相同,Iqueryable是可查询类型需要实现的最重要的接口,在其Count,ToList,ToArray之后才会真正执行查询,所以,为了保证性能,请尽量在最后一步在进行Count,ToList,ToArray等操作。

一、entity framework 中的orderby。

        public static List<House> GetListOrderByPrice()
        {
            List<House> houseList = null;
            using (HouseEntities db = new HouseEntities())
            {
                houseList = db.House.OrderBy(x => x.Price).ToList();
                //orderby方法是iqueryable类型对象的实例方法,也就是说,在where,select等方法后,都可以直接使用orderby来进行排序
                houseList = db.House.OrderByDescending(x => x.Price).ToList();
                //如果是逆序,请使用OrderByDescending方法
            }
            return houseList;
        }

orderby方法就是EF的排序方法,上面的代码展示了如何提取根据价格排序取房屋列表的方法。

二、entity framework 实现计数

        public static int GetCount()
        {
            int total = 0;
            using (HouseEntities db = new HouseEntities())
            {
                total = db.House.Count();
                //count方法即可实现类似SQL的count(1)方法,此方法可计算符合条件的数据条数。
                //count方法也是iqueryable类型对象的实例方法,所以,可以接在where,select等方法后使用,如下所示,即可查询所有1层的房屋
                total = db.House.Where(x => x.Floor == 1).Count();
            }
            return total;
        }

使用count方法即可轻松获得数量。

三、entity framework 实现groupby

        public static List<String> GetGroupByRegion()
        {
            List<string> groupByList = null;
            using (HouseEntities db = new HouseEntities())
            {
                groupByList = db.House.GroupBy(x => x.Region).Select(x => x.Key).ToList();
                //GroupBy方法即可实现SQL的Group By关键字,此方法可对已有数据进行分类,需要注意的是,在groupby之后,还需要选择key作为groupby之后的字段来进行返回
                //GroupBy方法也是iqueryable类型对象的实例方法,所以,可以接在where,select等方法后使用
                //上面的例子,也可以写成ToArray,这样会返回一个字符串数组,相对开销更小,但数组长度不可变,如需对其进行扩增相对困难。
            }
            return groupByList;
        }

使用上面的方法即可实现groupby。

四、entity framework 实现like和in

       public static List<House> GetListOrderByPrice(string region)
        {
            List<House> houseList = null;
            using (HouseEntities db = new HouseEntities())
            {
                houseList = db.House.Where(x=>x.Region.Contains(region)).ToList();
                //Contains方法是string类型对象的实例方法,在EF中,它会被最终解析为 like‘% %’的样子
                houseList = db.House.Where(x => x.Region.StartsWith(region)).ToList();
                houseList = db.House.Where(x => x.Region.EndsWith(region)).ToList();
                //如果需要实现like‘% ’或者 like ‘ %’则需要使用 startwith,和endwith

                var ids = new int[] { 1, 2, 3 };
                houseList = db.House.Where(x => ids.Contains(x.ID)).ToList();
                //除了like以外,数组的Contains还可以实现 SQL中IN的操作。上面的代码既实现了 select * from house where id in (1,2,3)

            }
            return houseList;
        }

contains方法对于数组和字符串来说,可转换为不同的SQL关键字,方便我们实现LIKE和IN的操作。

五、entity framework 实现分页

        public static List<House> GetListByPage(int pagesize,int pageindex,out int count)
        {
            List<House> houseList = null;
            using (HouseEntities db = new HouseEntities())
            {
                count = db.House.Count();
                houseList = db.House.Skip((pageindex-1)*pagesize).Take(pagesize).ToList();
                //skip方法即可实现在列表中跳过N条的操作,take则可实现从当前索引开始提取N条的操作。
                //所以如上方法既实现了简单的分页操作,count则返回house表的真实数量。
            }
            return houseList;
        }
时间: 2024-10-03 13:48:24

entity framework 新手入门篇(3)-entity framework实现orderby,count,groupby,like,in,分页等的相关文章

entity framework 新手入门篇(2)-entity framework基本的增删改查

经过前两节的简单描述,终于可以进入entity framework的使用部分了.本节将对entity framework原生的增删改查进行讲解. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller表. 一.entity framework 相关类的理解. 首先,House数据库在映射后会生成一个名为HouseEntities的类,这个类我们称之为数据上下文,可以简单的理解为数据库的部分映射(如果映射了全部的表,视图,存储过程,则可看作全部映射). 使用数据库的时

entity framework 新手入门篇(1)-建立模型

entity framework是微软官方免费提供给大家的一套ORM(Object Relational Mapping对象关系映射)解决方案.它不仅可以帮助我们解决数据缓存的问题,还能在最小的开销下实现完全的OO(Object Oriented面向对象)编程.实乃中小项目中敏捷开发的一大福祉.博主作为一只刚入本行的菜鸟,有幸参加开发了几个使用entity framework(以下简称EF)的项目,虽然在这些项目开发的过程中,走了许多的弯路,网上的资料也不甚齐全.在摸爬滚打了一年之后,也算有了一

entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended

对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller表. 一.使用原生EF如何实现批量删除和修改? //批量修改 public static bool UpdateAllPrice(decimal price) { bool isOk = false; using (HouseEntities db = new HouseEntities()) {

entity framework 新手入门篇(1.5)-lambda表达式与linq

在建立好了EF模型之后,先不着急使用它,在使用它之前,你还需要了解两个相关的技术,lambda表达式与linq. 作为微软C#语言中重要的语法糖-lambda表达式与LINQ,本质都是一个方法,以lambda表达式为例: x=>x+1;就是一个完整的lambda表达式. 其等同于一个匿名的方法: int anonymous(int x) { return x+1; } 考虑一下这个方法中最重要的部分,也就两个部分:传入的参数,返回的参数. 返回值类型,参数类型都是可以进行推断的,就像C#中的VA

MYSQL新手入门篇

MYSQL新手入门篇 一.数据库的简介 什么是数据库? 数据的仓库,如:在atm的实例中我们创建一个db目录称之为数据库 什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 他们是数据库软件,主要功能为两部分:1.讲数据保存到内存或者文件.2.接受特定的命令对数据进行操作 什么是SQL? 上述问题说过,数据库要接受特定的命令,这个命令就是用SQL编写,他是结构化查询语言(Structured Query Language)的缩写,一种专门与数据库交互的

iOS简易柱状图(带动画)--新手入门篇

叨逼叨 好久没更新博客了,才几个月,发生了好多事情,处理了好多事情.不变的是写代码依然在继续. 做点啥子 看看objective-c的书,学着写了个柱状图,只是练习的demo而已,iOS上的图表控件已经有非常好的解决方案了. PNChart:https://github.com/kevinzhow/PNChart 这个控件是是挺不错了,喜欢的朋友可以看看,本文很多地方借鉴了PNChart,就当学习源码也可以 动手动手 先上图先上图,配色直接用PNChart的了,还蛮喜欢这种配色风格,一直不太喜欢

实体框架(Entity Framework)快速入门--实例篇

在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 第一步:创建控制台项目 这个就不多说了,如果新建项目你还不知道,那先去学学基础吧. 第二步:创建实体模型 在项目上右击 添加新建项目→Ado .Net 实体数据模型 如下图所示: 第三步:与现有的 数据库 进行连接生成EF实体 在做这步之前,首先确定你是否已经有现有数据库,当然在这提供我自己的数据库脚本.

Entity Framework快速入门--IQueryable与IEnumberable的区别

IEnumerable接口 公开枚举器,该枚举器支持在指定类型的集合上进行简单迭代.也就是说:实现了此接口的object,就可以直接使用foreach遍历此object: IQueryable 接口 它继承 IEnumerable 接口,而因为.net版本加入Linq和IQueryable后,使得IEnumerable不再那么单调,变得更加强大和丰富. 为了区别两个接口,我们通过一个实际的例子来解释一下. 根据上篇随笔的实例,编写如下代码: static void Main( string []

第二篇:Entity Framework CodeFirst &amp; Model 映射

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现Mapping 又是怎样的呢? Entity