在上一篇“《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开发前奏的更多相关文章

  1. 《ASP.NET MVC企业实战》(二) MVC开发前奏

    ​ 在上一篇“<ASP.NET MVC企业级实战>(一)MVC开发前奏”中记录了作者介绍的一些比较实用的VS使用方法以及C#2.0中添加的新特性.本篇继续大概了解之后版本的一些新特性.   ...

  2. 《ASP.NET MVC企业实战》(一) MVC开发前奏

    一.工具和方法 学到了一些没用过的工具和方法: a)删除多余的using指令并排序:一个类头部的using一般会有很多用不到的,在完成类的编写后,可以右键选择”组织using”来删除没用的using并 ...

  3. asp.net mvc企业实战技能汇总

  4. PHP之MVC项目实战(三)

    本文主要包括以下内容 标准错误错误处理 http操作 PDO 文件操作 标准错误错误处理 PHP在语法层面上发生的错误 两个过程: 触发阶段(发生一个错误) 处理阶段(如何处理该错误) 触发阶段 系统 ...

  5. ASP.NET MVC企业级实战目录

    电子书样稿 (关注最新进度,请加QQ群:161436236) ASP.NET MVC企业实战第1章 MVC开发前奏.pdf ASP.NET MVC企业实战第10章 站内搜索.pdf 已经好长一段时间没 ...

  6. 应用程序框架实战三十三:表现层及ASP.NET MVC介绍(二)

    最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和Asp.net Mvc,我将在本篇讨论一些 ...

  7. 应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)

    本文将介绍表现层及ASP.NET MVC的一些要点,特别是ASP.NET MVC的一些抽象和封装技巧,如果你对MVC还不了解,可以参考<ASP.NET MVC4 高级编程>,作者Jon G ...

  8. ASP.NET MVC企业开发的基本环境

    ASP.NET MVC企业开发的基本环境[资源服务器概念] 学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang  茗洋  EasyUI1.3.4   ...

  9. 【AaronYang第一讲】ASP.NET MVC企业开发的基本环境[资源服务器概念]

    学完了ASP.NET MVC4 IN ACTION 六波以后 企业开发演习 标签:AaronYang  茗洋  EasyUI1.3.4   ASP.NET MVC 3 本篇博客地址:http://ww ...

随机推荐

  1. js中的块级作用域

    概述 函数是js中最常见的作用域单元, 声明在一个函数内部的变量或函数会在所处的作用域中隐藏起来, 这是有意为之的非常好的设计原则. 但是随着js的发展, 我们有了某个代码块(通常指{..}内部)隐藏 ...

  2. Javascript百学不厌 - 尾递归

    虽然偶尔也用过,但是从来没具体来整理过 普通递归: function fac(n) { ) ; ); } fac() 这是个阶乘.但是占用内存,因为: fac(5) (5*fac(4)) (5*(4* ...

  3. 【转载】MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解

    [原文链接]:MyBatis JdbcType 与Oracle.MySql数据类型对应关系详解 1. Mybatis JdbcType与Oracle.MySql数据类型对应列表 2. Mybatis ...

  4. win10 store 无法连接网络(原创)

    当你试过所有的解决攻略 都无效时,那么使用这个教程 关闭以下的蓝色框里的

  5. 测试工具之Match Tracer(正则表达式匹配工具)

    这个工具完全界面化,非常好用,如果对自己写的正则表达式不够确定,可以使用这个软件来试水一下 从下面网址可以下载: http://www.regexlab.com/zh/mtracer/download ...

  6. 14-01 Java matches类,Pattern类,matcher类

    Pattern类 正则表达式常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [ ...

  7. swaggerui集成oauth implicit

    swaggerui集成oauth implicit 添加引用 Swashbuckle.AspNetCore IdentityServer4.AccessTokenValidation 预先准备好Ide ...

  8. 比Python、Java更快的 Go 语言,能否称霸江湖?

    关注之后加星标,江湖要事早知道 ​ 文章来源:jb51.net 有一种语言堪称比语言排行榜前五热门选手的Python.Java更快,它就是GO语言. Go于2009年11月正式宣布推出,成为开放源代码 ...

  9. 从零开始学 Web 之 HTML5(二)表单,多媒体新增内容,新增获取操作元素,自定义属性

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  10. node-webkit无边框窗口用纯JS实现拖动改变大小

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     & ...