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#中的VAR关键字。所以,X=>X+1就是一个最简单的x++的lambda表达式的实现。
知道了它的本质,那我们应该怎么使用它呢?我来举一个最简单的例子:从一个不规则的字符串数组中取出所有以s开头的字符串
看到这里,最直接,最小白的写法:

循环整个数组,找到字符串里S的索引为0的字符串,加入到新的LIST中。
除了这个,其实还有更优雅,更面向对象的一些的写法,例如:

但这两种写法, 我们都写了一个循环,新建了一个集合来收集所有符合条件的变量。接下来,如果使用lambda或者LINQ将会如何呢?

这一段,完整的包括了新建元数据,使用两种写法进行筛选,最终打印到屏幕。
第一句是建立元数据,不做详解,第二句是linq语句的写法
from X in XXX where true select x是linq的经典句式,x为临时变量,与lambda表达式中的x相同。XXX是可枚举类型,如数组,集合等。where后面是一个BOOL值用作判断条件,最终select后面的,就是返回值了。我们返回了X,并最终使用了TOARRAY方法,所以,最终的数据类型是string[].(如果使用ToList()方法,将最终得到集合类List<string>)。
第三句是lambda写法,where()表示查询的条件,如果需要明显指定取出的值,还可以在where方法后再接一句.select(x=>x)。当然在这里我们只取一个值,就显得毫无必要了。
看完了这个例子,是不是想问,这与EF有个毛的关系?
其实,这个例子用在数据库查询中,就相当于select id from table1 where name like 's%';
而这个例子只要稍加改动,就能变成EF中最重要的查询手段。
entity framework 新手入门篇(1.5)-lambda表达式与linq的更多相关文章
- entity framework 新手入门篇(4)-entity framework扩展之 entityframework.extended
对于EF的操作,我们已经有了大概的了解了,但对于实战来说,似乎还欠缺着一些常用的功能,那就是批量的删除,更新数据. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller ...
- entity framework 新手入门篇(2)-entity framework基本的增删改查
经过前两节的简单描述,终于可以进入entity framework的使用部分了.本节将对entity framework原生的增删改查进行讲解. 承接上面的部分,我们有一个叫做House的数据库,其中 ...
- entity framework 新手入门篇(3)-entity framework实现orderby,count,groupby,like,in,分页等
前面我们已经学习了entityframework的基本的增删改查,今天,我们将在EF中实现一些更加贴近于实际功能的SQL方法. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和 ...
- entity framework 新手入门篇(1)-建立模型
entity framework是微软官方免费提供给大家的一套ORM(Object Relational Mapping对象关系映射)解决方案.它不仅可以帮助我们解决数据缓存的问题,还能在最小的开销下 ...
- Entity Framework 新手入门友好实例
起因 因为实习的原因,程序之中用到了较多的数据库操作逻辑.如果每一处数据库操作都手写的话,工作量较大且后期不易于维护,所以希望能通过 ORM 框架来解决这两个问题. 在昨天之前,对于 ORM 这个词汇 ...
- 实体框架(Entity Framework)快速入门--实例篇
在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 ...
- Entity Framework 程序设计入门二 对数据进行CRUD操作和查询
前一篇文章介绍了应用LLBL Gen生成Entity Framework所需要的类型定义,用一行代码完成数据资料的读取, <LLBL Gen + Entity Framework 程序设计入门& ...
- Entity Framework快速入门--ModelFirst
Entity Framework带给我们的不仅仅是操作上的方便,而且使用上也很是考虑了用户的友好交互,EF4.0与vs2010的完美融合也是我们选择它的一个理由吧.相比Nhibernate微软这方面做 ...
- 使用MVC5的Entity Framework 6入门 ---- 系列教程
使用MVC5的Entity Framework 6入门(十二)——为ASP.NET MVC应用程序使用高级功能 为ASP.NET MVC应用程序使用高级功能这是微软官方教程Getting Starte ...
随机推荐
- zookeeper 应用
一,启动一个zk客户端 zookeeper/bin/zkCli.sh ls / 查看根目录下所有节点 create /znode data 创建节点znode,并添加数据内容为data ls /z ...
- RedHat下安装Telnet服务端及客户端远程连接配置
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力. 配置之前请确保网络连通,如防火墙影响连接,请先关 ...
- CentOS下设置MySQL的root密码
CentOS刚装的MySQL一般需要重设MySQL密码,可以用以下方法重设. 方法一. Js代码 # /etc/init.d/mysqld stop # mysqld_safe --user=my ...
- cordova iOS blank iframe iphone iframe 白屏 ios iframe 白屏
(1)解决方案 http://stackoverflow.com/questions/36572537/cordova-ios-blank-iframe/36587026 在 index.html中配 ...
- JavaScript判断、循环、Map、Set
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 一些判断条件 JavaScript把null.undefined.0.NaN和空字符串''视为 ...
- LoadRunner ERROR:Could not call flex.messaging.io.amf.ASObject.readObject() : Cannot parse date.
Error: Encoding of AMF message failed. Error is : Exception Occurred while invoking WriteObject meth ...
- C/C++回调函数
C/C++回调函数 在理解“回调函数”之前,首先讨论下函数指针的概念. 函数指针 (1)概念:指针是一个变量,是用来指向内存地址的.一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了 ...
- 利用mysql_multi来管理多实例:
mysql_multi的现实意义: 1:随着连接数上升,性能会下降,通过多实例来分流大量连接来提高性能. 2:做资源隔离 3:分库分表 mysql_multi是官方管理多实例的一个脚本,利用perl语 ...
- java List 排序
List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String&g ...
- jquery 中 $.map 的使用方法
$.map(data,function(item,index){return XXX}) 遍历data数组中的每个元素,并按照return中的计算方式 形成一个新的元素,放入返回的数组中 ,,], f ...