LinQ是什么?
•LINQ(发音:Link)是语言级集成查询(Language INtegrated Query)
•LINQ是一种用来进行数据访问的编程模型,使得.NET语言可以直接支持数据查询
•LINQ的目标是降低访问数据的复杂度
•LINQ可以用统一的方法访问不同类型的数据,可以将数据作为对象使用
•能够更好地与编程模型集成
•可以在Visual Studio中进行智能提示
•动态编程
LINQ的历史:
•从语言方面的进化
–委托
–匿名方法
–Lambda表达式
–Linq查询表达式
•从时间方面的演进
–2004年
–2005年9月,C#2.0的PDC上发布
–2005年11月,C#2.0预览版
–2006年1月,VB8.0预览版
–2007年11月,.net 3.5发布
LINQ基础:
•语言集成查询 (LINQ) 允许开发人员通过强类型化语法使用.NET Framework 3.5 代码编写类似 SQL 的查询。
•LINQ 查询还具有一个标准查询操作符库来增强其功能。这些标准查询操作符对序列进行运算并可执行各种运算,如确定序列中是否存在某个值以及对序列运行合计函数(如求和)
•LINQ包括:
–LINQ to Objects 用于对象的查询
–LINQ to XML 对XML数据的查询
–LINQ to ADO.NET 对数据库的查询
•LINQ to DataSets 数据集
•LINQ to Entities ORM对象
•LINQ to SQL 简易ORM框架
•命名空间在System.Linq
•实现 IEnumerable<T> 或 IQueryable<T> 接口的对象都可使用LINQ操作
LINQ框架图:

LINQ基础语法:
•
From ?? In ** where … select new {};
–查询语法是以 from 关键字开头的,而不是以 select 关键字开头的?
–为了IDE的智能感知(Intelisence)这个功能,select 关键字放在后面
•
例:
var q =
from c in db.Customers
where c.City == "London"
select c;
var q =
from c in db.Customers
where c.City == "London"
select c;
•
语法与数据库的
SQL
命令有些相似
select * from employee where empno =7376;
select * from employee where empno =7376;
LINQ基础操作符:
•
聚合
•
Aggregate
对序列执行一个自定义方法
•
Average
计算数值序列的平均值
•
Count
返回序列中的项目数(整数)
•
LongCount
返回序列中的项目数(长型)
•
Min
查找数字序列中的最小数
•
Max
查找数字序列中的最大数
•
Sum
汇总序列中的数字
•
元素
•
DefaultIfEmpty
为空序列创建默认元素
•
ElementAt
返回序列中指定索引的元素
•
ElementAtOrDefault
返回序列中指定索引的元素,或如果索引超出范围则返回默认值
•
First
返回序列中的第一个元素
•
FirstOrDefault
返回序列中的第一个元素,或者如果未找到元素,则返回默认值
•
Last
返回序列中的最后一个元素
•
LastOrDefault
返回序列中的最后一个元素,或者如果未找到元素,则返回默认值
•
Single
返回序列中的单个元素
•
SingleOrDefault
返回序列中的单个元素,或者如果未找到元素,则返回默认值
•
排序
•
OrderBy
以升序按值排列序列
•
OrderByDescending
以降序按值排列序列
•
ThenBy
升序排列已排序的序列
•
ThenByDescending
降序排列已排序的序列
•
Reverse
颠倒序列中项目的顺序
•
…
•
…
LINQ的未来:
•
一切皆可
LINQ,
一切皆有可能
•程序语言向自然语言的进化
•数据库存储在软件系统分层中更清晰
•基于.net平台的软件体系更好应用ORM
•影响编程习惯,及解决问题的思路
LINQ参见资料:
•
http://dev.yesky.com/topic/305/8142805.shtml
•http://www.verycd.com/topics/2762344/
•http://www.docin.com/p-49692160.html
•http://cid-79cf5e75e6e5fd50.spaces.live.com/blog/cns!79CF5E75E6E5FD50!379.entry