【IT168技术分析】 关于微软的语言集成查询(Language Integrated Query,简称LINQ),你可能还没有听说,或者听说过之后没有去深入了解就将其扔到一边。
不过值得一提的是,LINQ有别于多数新技术,它值得你去了解并使用,因为它的确可以完成自己所宣称的功能,绝无夸大自身能力之嫌。经过近一年对LINQ的使用经历,我感觉它没有令我失望,这一点与我试用的很多其它新技术是完全不同的。LINQ非常易用而且可靠。这并非我的个人观点,微软之外的众多开发者已经纷纷开始为其创造大量的第三方插件,这一点就足以证明了我给它下的结论。
如果你以前还没有接触过LINQ,那么先来看一下它的以下比较直白的定义。LINQ是一种查询语言,和我们熟悉的SQL非常类似,但其语法与SQL略有不同。它的基本思想是你提出一个问题(更准确说是你的应用程序提出问题),然后LINQ从你指定的数据源中为你找出问题的答案。这个数据源可能并非一个我们所理解的数据库。举个例子来说,当你询问LINQ哪一个员工在你的财务部门时,如果你指定了活动目录作为数据源,那么它就可以从活动目录中为你找到答案。
关于LINQ的技巧网上可能有很多,下面我从大的方面来介绍一下它能给开发团队带来的好处。
1、无需复杂学习过程即可上手
LINQ的最主要的一个好处在于它的重用性。你创建的同一个复杂查询可以应用于众多不同的数据源:活动目录、微软的SQL Server、MySQL或一个Web服务;开发者不用必须不断学习新技术就可以上手使用LINQ。
实际上LINQ几乎支持你所期望的所有数据源:数据对象、SQL Server数据库、XML和数据集。不过,如果你认为LINQ就支持这些,你就会错失它的真正强大之处。通过使用第三方提供商的LINQ插件,你可以让它支持大量的其它数据源。其中你可以看到一些诸如活动目录的通用数据源,也可以发现一些诸如RDF等不常见的数据源。
在以前,如果你要想使用编程环境中的多数技术所不支持的数据源,可能要想尽办法琢磨新编程技巧。在编程过程中的一处修改往往会引来大量的代码修改。而对于LINQ,你可以在不同的数据源中一直使用相同的查询语句。这一点会大大简化开发过程,尤其对一个新加入项目的程序员,和DBA还不太熟,这时候LINQ的优势尤为突出。下面我给出一个简单的C#示例。
{ "One", "Two", "Three", "Four", "Five" };
要想查找其中长度大于3的字符串,你可以使用以下查询语句:
from StringValue
in QueryString
where StringValue.Length > 3
select StringValue;
在上例中,ThisQuery是这个查询过程的输出。你无需定义一个真实的类型,因为LINQ可以为你完成这个工作;你只需要使用var作为其数据类型。在上例的代码中使用了StringValue来存放QueryString中匹配where条件的不同字符串。而这个查询中的select仅告诉从数据源中选取什么。
你可以相同的查询从RDF或活动目录中获取数据。如果你有其它数据源,你可以使用相同的代码来获得你想要的数据,是不是很酷?
不要认为LINQ仅支持微软相关的数据源,实际上对于众多开源数据库它也同样支持。例如,LINQ可以很好的支持MySQL。
你或许会认为LINQ查询不能处理复杂的查询。上面的例子只是一个入门级的演示,并不代表它的真正能力。LINQ查询和SQL查询一样,可以实现非常复杂的查询功能,如果你需要它完成更复杂的工作,它同样也可以办得到。