在上一篇“《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. Ideas

    1.蔬菜店,自带种植的菜地.(实现蔬菜都是新采摘的.) 这个试用于农村,因为需要土地.农村现在蔬菜店大多也是外出进货.有些菜放久了,就坏掉了. 这里有问题就是,(1).如果销量不够,怎么让蔬菜不烂在菜 ...

  2. 从github clone文件: Failed to receive SOCKS4 connect request ack.

    安装了代理,能上网,也能从github上下载文件,就是无法从github上clone文件, 查了很久资料后,终于发现使用sudo可以解决问题.不过,不知道原因是什么? 比如:git clone htt ...

  3. python中使用queue实现约瑟夫环(约瑟夫问题)求解

    约瑟夫问题:是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围. 从编号为k的人开始报数,数到m的那个人出列:他的下一个人又从1开始报数,数到m的那个人又出列: 依 ...

  4. LeetCode: 107_Binary Tree Level Order Traversal II | 二叉树自底向上的层次遍历 | Easy

    本题和上题一样同属于层次遍历,不同的是本题从底层往上遍历,如下: 代码如下: struct TreeNode { int val; TreeNode* left; TreeNode* right; T ...

  5. eclipse clean和build作用

    由于eclipse的编译是基于时间戳的判断机制的. 因此当你按build   all的时候有些eclipse认为时间戳没有改变的类不会被编译. 因此你可以先clean一下再编译.这个时候eclipse ...

  6. 个人总结的一个中高级Java开发工程师或架构师需要掌握哪几点!

    今天,我来唠叨几句~~ 知识改变命运,对于Java程序员来说,技术不断更新,只有及时充电,才能不被市场淘汰.今天为大家分享Java程序员学习的6个小技巧. 1.一定要看书 现在学习Java变得比以前容 ...

  7. Django--中间件相关

    一 什么是中间件 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影 ...

  8. 关于ASP.Net Core Web及API身份认证的解决方案

    6月15日,在端午节前的最后一个工作日,想起有段日子没有写过文章了,倒有些荒疏了.今借夏日蒸蒸之气,偷得浮生半日悠闲.闲话就说到这里吧,提前祝大家端午愉快(屈原听了该不高兴了:))!.NetCore自 ...

  9. 高手速成android开源项目【View篇】

    主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar及其他如Dialo ...

  10. 深入C#并行编程(1) -- 了解线程

    一.操作系统用进程(Processe)分隔正在执行的程序,用线程(Thread)作为操作系统分配处理器时间的基本单元,进程上下文中可以运行多个线程,进程的所有线程共享其虚拟地址空间,所有线程均可执行程 ...