《精通C#》第十二章 Linq
Linq是在.Net3.5之后首次引入的,这种查询语言简单易学,可用范围非常广泛在学着之前,一直用在数据库操作之上,但是在学习这节课之后才发现,凡是实现泛型的接口类型都可以使用linq,简单来说就是实现IEnumerable<T>接口。那么什么是泛型?什么是非泛型?
先说说非泛型,是.Net2.0之前一直在使用的集合类,它的特点在于它在存储数据的时候不需要指定数据的类型,甚至在一个集合内可以存储多个不同的类型数据,因为这些容器类是接受system.object的,也就是说,只要是基础与object的数据,非泛型容器类都可以进行存储,但是编译器在存储数据的时候会在系统底层自动进行装箱操作,在提取数据的时候又需要我们人工进行拆箱操作,这样也就增加了代码发生错误的几率。CLR(CLR是公共语言运行库(Common Language Runtime)和Java虚拟机一样也是一个运行时环境,它负责资源管理(内存分配和垃圾收集等),并保证应用和底层操作系统之间必要的分离。CLR存在两种不同的翻译名称:公共语言运行库和公共语言运行时。)在装箱拆箱操作时,会进行大量的内存转化操作,这就会降低运行时的执行速度,必须再提一点的是,这些经典的类不是类型安全的,它们本身就是为了操作object类而开发出来的,因此使用这些类会导致低性能的代码,特别是在操作数组数据时。接下来说说泛型容器类,它和非泛型的最大的区别是类型安全的,在定义一个泛型时,需要先定义该泛型所保存的数据的数据类型,在添加数据的时候如果所添加的数据和定义的不一致,编译器就会报错。因为已经定义数据类型的原因,在使用就不需要进行装箱拆箱操作。
回转linq,linq可以有三种写法,第一种是直接使用from in等c#操作符的写法,格式大体为:var result=from item in container where BooleanExpression select item;第二种为:var result=container.where(o=>对容器内数据的筛选).select item;第三种就是利用Enumerable类型和匿名方法,例:
static void main()
{
string[] str={"11","22","33"};
Func<string,bool> search=delegate(string game){return game.Contains(" ");};
Func<string,string> items=delegate(string s){return s;};
var result=str.where(search).select(items);
}
总之,linq是一种方便好用的语言,他可以是我们在对数据进行操作的时候少些很多代码,节省下很多时间。
《精通C#》第十二章 Linq的更多相关文章
- PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)
主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...
- <构建之法>第十一章、十二章有感
十一章:软件设计与实现 工作时要懂得平衡进度和质量.我一直有一个困扰:像我们团队这次做 男神女神配 社区交友网,我负责主页的设计及内容模块,有个队友负责网站的注册和登录模块,有个队友负责搜索模块,有个 ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)
第六章: 管理数据库事务 事务 是 由第五章 数据操作语言完成的 DML ,是对数据库锁做的一个操作或者修改. 所有事务都有开始和结束 事务可以被保存和撤销 如果事务在中途失败,事务中的任何部分都不 ...
- 《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记
第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系后代,ash shell是Unix系统上原来地Bourne shell的简化版本 ...
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高
第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...
- [CSAPP笔记][第十二章并发编程]
第十二章 并发编程 如果逻辑控制流在时间上是重叠,那么它们就是并发的(concurrent).这种常见的现象称为并发(concurrency). 硬件异常处理程序,进程和Unix信号处理程序都是大家熟 ...
- perl5 第十二章 Perl5中的引用/指针
第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用 子程序模板七.数组与子程序八.文件句 ...
- 第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息
原文:第十二章--SQLServer统计信息(4)--在过滤索引上的统计信息 前言: 从2008开始,引入了一个增强非聚集索引的新功能--过滤索引(filter index),可以使用带有where条 ...
- 第十二章——SQLServer统计信息(3)——发现过期统计信息并处理
原文:第十二章--SQLServer统计信息(3)--发现过期统计信息并处理 前言: 统计信息是关于谓词中的数据分布的主要信息源,如果不知道具体的数据分布,优化器不能获得预估的数据集,从而不能统计需要 ...
随机推荐
- 查询Oracle正在执行和执行过的SQL语句
---正在执行的 select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a.s ...
- 接口测试之HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- MySQL使用规范
一. 表设计类 强制类规范 1. 创建表的存储引擎必须是InnoDB. 2. 每个表必须显式的指定一个主键. 3. 不允许使用联合主键. 4. 不允许使用外键. 5. 不允许存在和主键重复的索引 ...
- SQL 语句格式
SELECT `menuid`, SUM(`num`)AS total, `storeid`, DATE_FORMAT(`dateline`,'%Y-%m-%d') days FROM loss WH ...
- POJ-1028 Web Navigation 和TOJ 1196. Web Navigation
Standard web browsers contain features to move backward and forward among the pages recently visited ...
- js判断输入时间是否大于系统时间
validator.js中添加验证 beforeCurrentTime : {// 时间不能大于当前时间 validator : function(value) { var myDate = new ...
- easyUI跨Tab操作datagrid
1.在datagrid那个页面定义方法 window.top["RELOAD_MY_DATAGRID"]=function(){ $("#dg").datagr ...
- mysql 删除时候有外键提示问题解决
在直接调用delete 语句的时候,如果出现了外键错误提示的时候,可以考虑用下面的语句执行. 原理是去除外键提示,先用外键约束,再取消外键约束即可 SET FOREIGN_KEY_CHECKS=1;D ...
- 浮动div中的图片垂直居中
table-cell方法垂直水平居中 <!DOCTYPE html> <html> <head> <meta name="description&q ...
- 在iOS中使用OpenSSL的Public Key 进行加密
这几天一直潜心于iOS开发,刚好把遇到的问题都记录一下.这次遇到的问题就是如果根据得到的Public Key在iOS 客户端对用户名和密码进行加密. Public Key如下: -----BEGIN ...