前面我们已经学习了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,和endwithvar 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;}

转载于:https://www.cnblogs.com/Damos/p/EF_3.html

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

  1. 计算机与交换机基础配置入门,新手入门篇:交换机配置窍门深入学习 -电脑资料...

    新手入门篇:交换机配置技巧深入学习,关于交换机配置技巧的问题,涉及到的东西比较多, 交换机配置技巧一直以来是非常神秘的,不仅对于一般用户,对于绝大多数网管人员来说也是如此,同时也是作为网管水平高低衡量 ...

  2. android 蒙版图片带拖动_黑橙修图:新手入门篇2-一句话带你认识图层蒙版

    大家好,这里是黑橙修图新手入门教程系列. 上一篇文章我么介绍了ps当中最核心的一个概念--图层.那么这篇文章带大家来了解一个与图层密切相关的概念--图层蒙版. 其实,图层蒙版也是一个类似图层的东西,只 ...

  3. CTF-攻防世界web新手入门篇

    CTF-攻防世界web新手入门(全) 攻防世界网址 1.view_source 2.robots 3.backup 4.cookie 5.disabled_button 6.weak_auth 7.s ...

  4. java 英雄联盟回合战斗_如何赢得一场英雄联盟的战斗新手入门篇

    导读:如何赢得一场英雄联盟的战斗?这里面存在非常多的因素,本文是英雄联盟欧服一篇非常入门级的心得手册,新手请进来看看,高手也可以随意看看. 综述 英雄联盟不是刷钱游戏,也不是杀人游戏,更不是类似炮塔防 ...

  5. java微博开发_【新手入门篇】新浪微博应用开发之Java入门篇

    新浪微博应用开发之Java篇 2012年11月11日星期日 一.开发流程简介: 2.  在以下地址创建一个应用,假设创建一个桌面应用: 3.  进入管理中心,查看并记住应用ID和密码: 4.  在&q ...

  6. 【新手入门篇】新浪微博应用开发之Java入门篇

    新浪微博应用开发之Java篇 2012年11月11日星期日 一.开发流程简介: 1.  访问http://open.weibo.com/注册成为开发者 2.  在以下地址创建一个应用,假设创建一个桌面 ...

  7. 嵌入式linux学习路径--新手入门篇

    嵌入式linux如何入门? 前言 基础概念 计算机与嵌入式的关系 操作系统是什么? 程序 网络 ARP IP ICMP TCP UDP DNS DHCP FTP HTTP linux系统命令 目录相关 ...

  8. springboot 关闭懒加载_SpringBoot新手入门篇

    SpringBoot是干哈的 介绍:springboot是由Pivotal团队提供的全新框架.spring的出现是为了解决企业级开发应用的复杂性,spring的通过注册bean的方式来管理类,但是随着 ...

  9. 大数据新手入门篇之Linux网络系统

    Linux网络系统 网络信息 修改主机名 # hostname node01 //本次登录修改 # hostname //查看主机名# vi/etc/hostname //永久修改 # shutdow ...

  10. SpringBoot是什么?干嘛用的?(新手入门篇)

    SpringBoot是干哈的 介绍:springboot是由Pivotal团队提供的全新框架.spring的出现是为了解决企业级开发应用的复杂性,spring的通过注册bean的方式来管理类,但是随着 ...

最新文章

  1. mysql select操作
  2. 【翻译】HTML5基于浏览器的媒体播放器:可以离线播放你的mp3文件
  3. c#实现数据集合转换为csv文本
  4. OpenCASCADE:OCCT应用框架OCAF之TObj模型辅助类和包装
  5. 如何定义和建立架构?
  6. freebsd linux目录,FreeBSD和Linux如何互相访问文件系统
  7. mysql2005卸载步骤,二次安装mysql步骤
  8. 性能优化实战案例——助力某移动OA系统
  9. tp5命令行基础介绍
  10. 美国签证过不了,ICLR 2020搬到埃塞俄比亚,同性恋学者:不去,保命要紧
  11. java防止浏览器直接打开下载的文件
  12. 有序多分类Logistic回归(图文+数据集)【SPSS 079期】
  13. React-Native-版高仿淘宝、京东商城首页、商品分类页面,android插件化和组件化
  14. 安卓miracast花屏_计算机通过Miracast无线投屏到其他设备,出现卡顿及花屏现象...
  15. 二零零九年经典雷人语录总汇四百零五条[转的]
  16. 6个小众口碑却非常好的APP,收藏起来,变身手机达人!
  17. 美国L1签证和B1,E2签证的区别
  18. 【无标题】C++输入两个坐标显示出输入的坐标以及均值
  19. 通过VISA库实现GPIB通信
  20. Java8 Lambda表达式语法和示例

热门文章

  1. 文件不小心删除了怎么恢复呢,怎么恢复误删除的文件
  2. 推荐的五款市面上常用的免费CMS建站系统
  3. ios键盘done中文_iOS键盘事件实现、控制
  4. 计算机主机解剖图,电脑主机结构示意图
  5. 《相关性准则——大数据时代的高效能之道》一一1.6 相关性准则
  6. android打印机字体大小,热敏打印机字体大小设置,怎么设置打印机字体
  7. android手机内存不足使用sd卡,解决红米内存不足(内置SD卡与外置SD卡互换)
  8. android如何加密所有的布局文件夹,android:是否可以加密文件夹
  9. Android创建快捷方式-SHORTCUT
  10. 2021-03-27