资源描述:
《LINQ学习资料整理.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基础知识LINQ 1.LINQ的读法:(1)link(2)linq 2.LINQ的关键词:from,select,in,where,groupby,orderby… 3.LINQ的注意点:必须以select或者是groupby结束。 4.LINQ的语义: from临时变量in集合对象或数据库对象 where条件表达式 [orderby条件] select临时变量中被查询的值 [groupby条件]LINQ的查询返回值的类型是临时变量的类型,可能是一个对象也可能是一个集合。并且LINQ的查询表达
2、式是在最近一次创建对象时才被编译的。LINQ的查询一般跟var关键字一起联用(什么是var?匿名对象)。以下的两个查询表达式是一样的效果: varq=fromnameinmethods where(name.Name.Length>15) selectname; 5.LINQ的全称:Language-IntegratedQuery6.LINQ的分类:LINQtoObject,LINQtoXML,LINQtoSQL,LINQtoADO.NETQ:为何LINQ查询语法是以from关键字开头的,而不是以se
3、lect关键字开头的?select开头这种写法跟SQL的写法更接近,更易懂呀? A:简单来说,为了IDE的智能感知(Intelisence)这个功能,select关键字放在后面了。 假设你要书写这样的代码:Selectp.Name,p.AgeFrompInpersonsWherexxx,代码是一个个字符输入的。 我们在写到pinpersons之前,p的类型是无法推测的,所以写Selectp.的时候,Name之类的属性不会弹出智能提示来。 这样就需要先去写From这句,再回来写Select。 微
4、软IDE组经过反复考虑决定,还不如就把Select写到后面了。于是编程语言中的写法就确定这样来写了。 我们再来看一个稍稍复杂的LINQ查询: 在我们罗列的语言字符串中,我们希望按照字符长短,分类罗列出来,实现代码如下: staticvoidMain(string[]args) {//定义数组 string[]languages={"Java","C#","C++","Delphi","VB.net","VC.net","C++Builder","Kylix","Perl","Python"};
5、 //定义查询 varquery=fromiteminlanguages orderbyitem groupitembyitem.LengthintolengthGroups orderbylengthGroups.Keydescending selectlengthGroups; foreach(variteminquery) { Console.WriteLine("stringsoflength",item.Key); foreach(varvalinitem) { Consol
6、e.WriteLine(val); } } Console.ReadLine(); } 其中的into关键字表示将前一个查询的结果视为后续查询的生成器,这里是跟groupby一起使用的。 LINQ中的Groupby不要跟SQL中的Groupby混淆,SQL由于是二维结构,Groupby的一些逻辑受二维结构的约束,无法象LINQ中的Groupby这么灵活。LINQ-Linq的内部执行原理浅析LINQ(LanguageIntegratedQuery)是VisualStudio2008中的领军人物。借
7、助于LINQ技术,我们可以使用一种类似SQL的语法来查询任何形式的数据。目前为止LINQ所支持的数据源有SQLServer、XML以及内存中的数据集合。开发人员也可以使用其提供的扩展框架添加更多的数据源,例如MySQL、Amazon甚至是GoogleDesktop。 一般来讲,这类查询语句的一个重要特点就是可以并行化执行。虽然有些情况下并行可能会带来一些问题,但这种情况非常少见。这样也就水到渠成地引出了PLINQ这个并行处理的LINQ类库。 PLINQ原名为ParallelLINQ,支持XML和内存中的数
8、据集合。执行于远程服务器上的查询语句(例如LINQtoSQL)显然无法实现这个功能。 将LINQ语句转换为PLINQ语句极为简单——只需要在查询语句中From子句所指定的数据源的最后添加.AsParallel()即可。随后Where、OrderBy和Select子句将自动改为调用这个并行的LINQ版本。据MSDNMagazine介绍,PLINQ可以以三种方式执行。第一种是管道处理:一个线程用来读取