11 2011 档案

摘要:本篇将是关于LINQ Operators的最后一篇,包括:集合运算符(Set)、Zip操作符、转换方法(Conversion Methods)、生成器方法(Generation Methods)。集合运算符用语对两个sequence进行操作;Zip运算符同步遍历两个sequence(像一个拉链一样),返回的sequence基于在每一个元素对上应用lambda表达式;转换方法用来将实现了IEnumerable的sequence转换到其他类型的集合,或从其他类型的集合转换到sequence;生成器方法/Generation Methods用来创建简单的本地sequence。 阅读全文
posted @ 2011-11-29 10:39 Life a Poem 阅读(10252) 评论(37) 推荐(18) 编辑
摘要:本篇继续LINQ Operators的介绍,包括元素运算符/Element Operators、集合方法/Aggregation、量词/Quantifiers Methods。元素运算符从一个sequence当中获取单个元素;集合方法对sequence进行统计/汇总并返回当个标量值;量词方法用于判断sequence是否满足特定条件并返回bool值。 阅读全文
posted @ 2011-11-28 10:17 Life a Poem 阅读(6222) 评论(16) 推荐(8) 编辑
摘要:本篇继续LINQ Operators的介绍,这里要讨论的是LINQ中的排序和分组功能。LINQ的排序操作符有:OrderBy, OrderByDescending, ThenBy, 和ThenByDescending,他们返回input sequence的排序版本。分组操作符GroupBy把一个平展的输入sequence进行分组存放到输出sequence中。 阅读全文
posted @ 2011-11-25 09:32 Life a Poem 阅读(10963) 评论(5) 推荐(12) 编辑
摘要:Join和GroupJoin通过匹配两个输入sequence来产生单个输出sequence。Join产生平展结果集,而GroupJoin产生层次结果集。Join和GroupJoin提供了Select和SelectMany的替代策略。 Join和GroupJoin的优点是他们对于本地内存集合的执行更加有效,因为他们开始就把内层sequence装载到一个按键排序的查找器,这样就避免了重复的遍历每一个内层元素。他们的缺点则是他们只提供了inner和left out join的功能,而cross joins和不等连接non-equi joins还是只能通过Select/SelectMany来实现。 阅读全文
posted @ 2011-11-22 14:58 Life a Poem 阅读(7710) 评论(9) 推荐(7) 编辑
摘要:本篇继续LINQ Operators的学习,这里我们讨论的是数据转换的两种方式:Select和SelectMany,看似简单常用的两种运算符,却也大有讲究。我们会在本篇详细介绍他们的使用方式和适用的场景,以及它们对于各种连接(Join)的支持方式。 阅读全文
posted @ 2011-11-18 10:06 Life a Poem 阅读(8554) 评论(18) 推荐(15) 编辑
摘要:在本系列博客前面的篇章中,已经对LINQ的作用、C# 3.0为LINQ提供的新特性,还有几种典型的LINQ技术:LINQ to Objects、LINQ to SQL、Entity Framework进行了比较详细的介绍,至此,我们应该了解了各种LINQ技术之间的联系和区别。千里之行始于足下,这些基础理论是理解和使用LINQ的关键。但是我们在前面的文章中对于LINQ查询运算符(LINQ Operators)并没有完整的介绍,这就是接下来这几篇博客中所要做的工作。大家可以按顺序依次对各个LINQ Operators进行学习,也可以把他们看成一个reference,作为参考查询之用。 阅读全文
posted @ 2011-11-16 09:34 Life a Poem 阅读(12608) 评论(21) 推荐(9) 编辑
摘要:在本篇中,我们将接着上一篇“LINQ to SQL 和 Entity Framework(上)”的内容,继续使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的关键特性。我们在此关注的是LINQ to SQL和Entity Framework中的”LINQ”部分,并会比较这两种技术的相同和不同之处。通过我们之前介绍的LINQ知识还有将来会讨论的更多LINQ Operators,相信阅者能针对LINQ to SQL和Entity Framework写出优雅高效的查询。为了简单清晰,文中有些地方对LINQ to SQL和Entity Framework进行了缩写,分别为:L2S和EF。 阅读全文
posted @ 2011-11-15 10:08 Life a Poem 阅读(14067) 评论(17) 推荐(12) 编辑
摘要:在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”。在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的关键特性。在本系列文章中,我不准备事无巨细的讨论LINQ to SQL和Entity Framework的方方面面,毕竟那样需要太多的篇幅,也会让我们从LINQ上面转移注意力,况且,园子里也有不少介绍LINQ to SQL和Entity Framework的好文章。我们在此关注的是LINQ to SQL和Entity Framework中的”LINQ”部分,并会比较这两种技术的相同和不同之处。通过我们之前介绍的LINQ知识还有将来会讨论的更多LINQ Operators,相信阅者能针对LINQ to SQL和Entity Framework写出优雅高效的查询。为了简单清晰,文中有些地方对LINQ to SQL和Entity Framework进行了缩写,分别为:L2S和EF。 阅读全文
posted @ 2011-11-10 14:03 Life a Poem 阅读(28278) 评论(30) 推荐(17) 编辑
摘要:LINQ提供了两个平行的架构:针对本地对象集合的本地查询(local queries),以及针对远程数据源的解释查询(Interpreted queries)。 在讨论LINQ to SQL等具体技术之前,我们有必要先对这两种架构进行了解和学习,只有在完全理解了他们的特点和原理后,才能够在LINQ to SQL等的学习过程中做到知其然且知其所以然,才能充分利用本地查询和解释查询的各自优势,写出高效正确的LINQ查询。本篇目的就是试图对解释查询的工作方式和实现原理进行剖析。 简单回忆一下之前我们讨论的本地查询架构,它用来操作实现了IEnumerable的对象集合。本地查询对应Enumerable类的查询运算符,返回装饰sequence以支持延迟执行。在创建本地查询时提供的lambda表达式最终会生成对应IL代码,就像其它C#方法那样。 而解释查询用来操作实现了IQueryable的sequence,并对应Queryable类中的查询运算符,这些运算符会生成运行时能被检测的表达式树,相应的LINQ Provider通过分析表达式树最终得到查询结果。 阅读全文
posted @ 2011-11-07 10:49 Life a Poem 阅读(12786) 评论(54) 推荐(26) 编辑

点击右上角即可分享
微信分享提示