走进Linq-Linq大观园
系列文章导航:
不能不说的C#特性-迭代器(下),yield以及流的延迟计算
走进Linq-Linq to SQL How do I(1)
走进Linq-Linq to SQL How do I(2)
走进Linq-Linq to SQL How do I(3)
走进Linq-Linq to SQL源代码赏析 Table
走进Linq-Linq to SQL源代码赏析之Provider的初始化
走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq
还没等coder说出口大师就在键盘上敲下:
程序=代码+数据
编程大师如是接着说:那这些数据平时都来源于哪里?
Coder:程序中自己构造的一些集合对象,像我刚才的代码中那样,还有数据库,这个使我们平时用到最多的,还有XML存储,还有WebService,这个来源于远程的数据,还有什么RSS啦等等,很多了。
编程大师:嗯,是的。数据的来源非常广泛,就说我们平常用的三个吧,内存中的集合对象、XML存储和数据库。对于内存中的集合对象我们有语言自身的支持,XML我们有XML的一些API,比如XPath,对于数据库我们有ADO.net,可实际上从抽象层面我们对这些数据的操作都是相同的,你想不想屏蔽掉存储的细节,在高层有一个统一的API访问这些数据呢?至于数据存储在哪里对于你是透明的,也许它存在于你内存中,也许在万网的机房也许在美国西雅图,但是对于你来说这些都无需关心,你的代码都一样。
Coder:听起来是个很美妙的事情,这不会是在做梦吧。
大师:不是在做梦,今天你已经有了这些方法
在.net 3.5里微软还发布了另外两个dll:
System.Data.Linq.dll,System.Xml.Linq.dll
在System.Data.Linq.dll里,对数据库的查询做了支持,不过目前微软提供的只支持Sql Server,感谢开源社区,现在有了DbLinq,它提供了对MySql,Oracle,Sql Server,PostgreSql,Sqlite的支持。
System.Xml.Linq.dll在更高层次对Xml的访问做了支持
这样你从微软这里获得了:Linq to Objects 对内存中的集合的支持、Linq to Xml 对Xml的支持、Linq to SQL 对Sql Server的支持
这是一张从Linq in Action那本书里的截图,该图很好的在一个大的层次上揭示了Linq的视图。C#、vb.net等一系列.net语言在一些语言特性和Linq对语言的扩展上对Linq家族提供了支持。未来我们将会实现Linq in Everywhere,Linq将成为你的变成习惯。