《ASP.NET MVC企业实战》(三)MVC开发前奏
在上一篇“《ASP.NET MVC企业级实战》(二)MVC开发前奏”中跟随作者大概了解了一些C#3.0和3.5中的新特性。本篇继续以这样的方式来学习C#中的一些特性。
一、C#3.0/3.5新特性(续)
a)Lambda表达式
Lambda表达式的本质就是匿名函数,基于数学中的λ演算而得名,直接对应其中的labmda抽象,是一个匿名函数,可以包含表达式和语句,并且可用于创建委托或表达式树类型。Lambda表达式的运算符为=>,读作goes to,具有与“=”相同的优先级。
Lambda表达式的基本形式为(inputparam)=> expression,例如(x,y)=>x==y;在只有一个参数时可以省略括号。lambda表达式的演化如下:
在原始写法中可以使用var类型推断,但后面的写法必须指定签名类型了。
b)标准查询运算符(SQO)
标准查询运算符时定义在System.Linq.Enumerable类中的50多个为IEnumerable<T>准备的扩展方法,这些方法用来对集合进行筛选、投影、聚合、排序等操作。
Where筛选集合,需要为where提供提供一个带bool返回值的筛选器,如图,匿名方法、委托、lambda表达式都可作为筛选器。
Select查询投射,返回的是IEnumerable<TResult>类型的集合。
Count数量统计。
OrderBy排序,还有OrderByDescending,ThenBy等,OrderBy后还可以继续OrderBy,ThenBy不是必须的。
延迟加载与即时加载,Where方法就是延迟加载的(Select也是),在通过ORM框架操作数据库时,使用Where方法只是在后续生成的SQL语句中增加了相应的条件,返回的是DbQuery对象,在这个对象上可以继续添加别的查询条件,最后在使用查询结果时(ToList、ToArray等)一次性查询数据库。
如果使用FindAll代替Where,会即时加载。延迟加载实际上是将SQL的生成与执行分开进行,这样可以减少与数据库的交互,有助于提高性能。
c)LINQ
linq查询表达式是与SQL风格接近的代码,linq编译时会转换成标准查询运算符。以from开始,以select或group by子句结尾,输出的是一个IEnumerable<T>或IQueryable<T>集合。简单使用一下,要达到了解的程度还远远不够:
二、 C#4.0新特性
a)可选参数和命名参数
可选参数接触较多,可以为某个参数指定默认的值,这样这个调用方法时这个参数就不是必须的了。
而通过命名参数的传参方式,实参顺序可以与形参的不同。
b)Dynamic特性
这与ViewBag类似,都是动态类型。
三、作者在最后还提了一下C#5.0的async、await特性,针对多线程和异步的,这些暂时不做了解了。
学习资料:ASP.NET MVC 企业级实战 by 邹琼俊
欢迎关注公众号【菜鸟程序员成长记】
《ASP.NET MVC企业实战》(三)MVC开发前奏的更多相关文章
- 《ASP.NET MVC企业实战》(二) MVC开发前奏
在上一篇“<ASP.NET MVC企业级实战>(一)MVC开发前奏”中记录了作者介绍的一些比较实用的VS使用方法以及C#2.0中添加的新特性.本篇继续大概了解之后版本的一些新特性. ...
- 《ASP.NET MVC企业实战》(一) MVC开发前奏
一.工具和方法 学到了一些没用过的工具和方法: a)删除多余的using指令并排序:一个类头部的using一般会有很多用不到的,在完成类的编写后,可以右键选择”组织using”来删除没用的using并 ...
- asp.net mvc企业实战技能汇总
- PHP之MVC项目实战(三)
本文主要包括以下内容 标准错误错误处理 http操作 PDO 文件操作 标准错误错误处理 PHP在语法层面上发生的错误 两个过程: 触发阶段(发生一个错误) 处理阶段(如何处理该错误) 触发阶段 系统 ...
- ASP.NET MVC企业级实战目录
电子书样稿 (关注最新进度,请加QQ群:161436236) ASP.NET MVC企业实战第1章 MVC开发前奏.pdf ASP.NET MVC企业实战第10章 站内搜索.pdf 已经好长一段时间没 ...
- 应用程序框架实战三十三:表现层及ASP.NET MVC介绍(二)
最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和Asp.net Mvc,我将在本篇讨论一些 ...
- 应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)
本文将介绍表现层及ASP.NET MVC的一些要点,特别是ASP.NET MVC的一些抽象和封装技巧,如果你对MVC还不了解,可以参考<ASP.NET MVC4 高级编程>,作者Jon G ...
- ASP.NET MVC企业开发的基本环境
ASP.NET MVC企业开发的基本环境[资源服务器概念] 学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang 茗洋 EasyUI1.3.4 ...
- 【AaronYang第一讲】ASP.NET MVC企业开发的基本环境[资源服务器概念]
学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang 茗洋 EasyUI1.3.4 ASP.NET MVC 3 本篇博客地址:http://ww ...
随机推荐
- ubuntu 16.04下使用 python pip的安装问题。
ubuntu 16.04使用 pip安装软件时,不知道为什么不能使用sudo pip install XXX 需要使用的是:python -m pip install XXX才可以.
- python实现stack并测试
栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算. 这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新 元素放 ...
- LeetCode--No.010 Regular Expression Matching
10. Regular Expression Matching Total Accepted: 89193 Total Submissions: 395441 Difficulty: Hard Imp ...
- Django2.1发布,Django2.1新特性
Django 2.1 现已正式发布,官方表示随着 2.1 的发布,对 2.0 系列的主流支持服务将结束,进入安全修复服务周期,直至2019年4月. 2.1新特性:https://docs.django ...
- 【sping揭秘】21、Spring动态数据源的切换
对于多个数据源的时候,我们如何切换不同的数据源进行数据库的操作呢? 当然我们可以直接定义2个DataSource,然后在每次获取connection的时候,从不同的DataSource中获取conne ...
- 关于小窗滑动,父级body也跟随滑动的解决方案(2)
当第一次写这个问题的时候,并不知道竟然还会写2,而且(1)也并没有解决问题. 也发现,这个问题,真实也困住了很多人,找到了张鑫旭(http://www.zhangxinxu.com/wordpress ...
- 根据PDF模板生成PDF文件(基于iTextSharp)
根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 ...
- Mongodb 命令清单
一.数据库常用命令 # 切换/创建数据库 PRIMARY> use yourDB; #当创建一个集合(table)的时候会自动创建当前数据库# 查询所有数据库 PRIMARY> show ...
- jQuery学习(1)猜数字游戏
jQuery是一个快捷.小型且特征丰富的JavaScript库.它使得HTML文档遍历及操作,事件处理,动画,Ajax等更简洁方便.它通过调用一个简单易用的API,就能在各种浏览器中使用.由于jQ ...
- .Net实现微信公众平台开发接口(二) 之 “获取access_token”
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/ ...