LINQ / LINQ to SQL / LINQ to XXX 它们到底有什么区别
LINQ是新生事物,不过从不少文章和讨论上看来,这方面的概念也已经有点混沌不清了。因此我们经常可以看到这样的话:
- LINQ只能将数据表与实体属性一一对应……
- LINQ开发指南:在LINQ中进行数据库字段映射……
以上两句话其实说的都是LINQ to SQL而不是指LINQ。可能由于LINQ to SQL的上镜率最广(连MSDN上About LINQ的第一个示例就是查询数据库的),因此许多人都将LINQ to SQL与LINQ混用,这会给初学者造成误解,认为LINQ就是LINQ to SQL,LINQ to SQL就是LINQ——事实当然不是这样的。
LINQ是Language-Integrated Query的缩写,是C# 3.0和VB 9.0中新加入的语言特性,可以在编程时使用内置的查询语言进行基于集合的操作。这么做可以大大简化开发过程,提高开发效率。例如:
List<User> userList = GetUserList();
var userWithOddId = from u in userList
where u.UserID % 2 == 1
select u; foreach (User u in userWithOddId)
{
Console.WriteLine(u.UserName);
}
如果没有LINQ,要筛选出ID为奇数的User对象则需要创建一个List,然后遍历整个列表,将符合特定条件的User对象放入新列表。而有了LINQ,这部分的筛选就变得非常容易,甚至只需要一句话就能完成。如果觉得这个例子不够说明LINQ对生产力有重大贡献的话,请关注我接下来的一篇文章(暂定名为《我们为什么要拥抱LINQ》)。LINQ特指形如上面这段代码中from...where...select这样的用法,其返回值是IQueryable<T>或IEnumerable<T>。
LINQ to SQL是.NET 3.5内置的一个轻量级O/R Mapping解决方案,可以将数据表映射为实体对象,方便开发人员对数据库的操作。可见,LINQ to SQL实只是LINQ的一个实现,提供了一个可以查询SQL Server数据库的LINQ Provider。
LINQ Provider是LINQ查询的执行器,标准LINQ语法支持许多的操作符,但是某个具体的LINQ实现可能只支持其中的一部分。在.NET 3.5默认提供了三种LINQ Provider,分别是LINQ to Object(即上面的例子),LINQ to SQL以及LINQ to XML。
LINQ to XXX表示使用LINQ针对XXX这种数据进行查询的解决方案。我们可以自定义LINQ Provider,使用我们自定义的查询规则来处理特定数据集。目前互联网上已经可以找到数十种LINQ Provider(如LINQ to Flickr,LINQ to NHibernate等),而已经处于beta 3阶段的ADO.NET Entity Framework,最终也会提供一个LINQ Provider,叫做“LINQ to Entities”。
LINQ / LINQ to SQL / LINQ to XXX 它们到底有什么区别的更多相关文章
- SQL/LINQ/Lamda 写法[转发]
SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees .Sele ...
- SQL Linq lamda区别
SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees .Sele ...
- 让我们开启数据库无Linq、零sql时代
让我们开启数据库无Linq.零sql时代 Moon.Orm 5.0总论 第一部分 MQL Moon.Orm 5.0 (MQL版) 版本维护及下载 (跟踪发布) Moon.Orm 5.0系列文章 1. ...
- SQL/LINQ/Lamda
SQL LINQ Lambda SELECT * FROM HumanResources.Employee from e in Employees select e Employees .Sele ...
- SQL,LINQ,Lambda语法对照图(转载)
如果你熟悉SQL语句,当使用LINQ时,会有似曾相识的感觉.但又略有不同.下面是SQL和LINQ,Lambda语法对照图 SQL LINQ Lambda SELECT * FROM HumanReso ...
- 为什么说 LINQ 要胜过 SQL
如果你还没有沉溺于 LINQ,就会想这有啥大惊小怪的.SQL 并没有坏掉,为什么还要对它进行修补呢? 为什么我们还需要另外一种查询语言呢? 流行的说法是 LINQ 同 C#(或者 VB)集成在了一起, ...
- LINQ语法类似于SQL的语法
LINQ语法类似于SQL的语法如下, Models.BookStoreEntities 是从添加新建项中的数据--->ADO.NET实体数据模型--->从数据库生成--->使用5.0 ...
- [LINQ2Dapper]最完整Dapper To Linq框架(五)---查看Linq实际执行的SQL
此例子是使用LINQ2Dapper封装,效率优于EntityFramwork,并且支持.NetFramework和.NetCore框架,只依赖于Dapper支持.net framework4.6.1及 ...
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
随机推荐
- java向mysql数据库插入数据显示乱码的问题
在做一个java web工程时,有时会碰到在向数据库添加数据库时,结果出现乱码”???“的问题.针对该问题的主要解决办法就是: 一.确保是否添加了字符集过滤器: 在java web工程中的web.xm ...
- double保持精度,防止小数点后数字的丢失的小方法
一般情况下,输入带小数点的字面值,编译器会把它解析成double 类型. 例如:一个字面值被直接放到代码中,由于带小数点所以,默认值为double类型 输出结果是:1.12345678912345 ...
- Android Junit测试框架
对应用进行单元测试: 使用Junit测试框架,是正规Android开发的必用技术.在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 1.配置指令集和函数库: (1)配置指令集,指定 ...
- 一步一步学Python(1) 基本逻辑控制举例和编码风格规范
(1) 基本逻辑控制举例和编码风格规范 1.while死循环 2.for循环 3.if,elif,else分支判断 4.编码风格(官方建议) 版本:Python3.4 1.while死循环 #func ...
- 【转】FastCgi与PHP-fpm关系
刚开始对这个问题我也挺纠结的,看了<HTTP权威指南>后,感觉清晰了不少. 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的,方便CGI程序的编写者. ...
- Windows Azure Cloud Service (10) Role的生命周期
<Windows Azure Platform 系列文章目录> 在上一章内容中,我们提到了Windows Azure会依次调用角色(Role)实例的OnStart()方法和Run()方法. ...
- caffe 试运行MNIST
转自:http://www.cnblogs.com/NanShan2016/p/5469942.html 编译完caffe后,在D:\caffe\caffe-master\caffe-master\b ...
- mysql的collation
mysql的collation大致的意思就是字符序.首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则.collation做的就是这个事情,你可以对表进行字 ...
- shell脚本二
在shell脚本一 中,我讨论了shell脚本的语法规范,shell脚本的变量,以及shell脚本的测试语句. 仅仅懂得这些只能写简单的脚本,在简单的脚本中各条语句按顺序执行,从而实现自动化的管理,顺 ...
- 【转】NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装
一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...