本篇继续LINQ Operators的介绍,包括元素运算符/Element Operators.集合方法/Aggregation.量词/Quantifiers Methods.元素运算符从一个sequence当中获取单个元素:集合方法对sequence进行统计/汇总并返回当个标量值:量词方法用于判断sequence是否满足特定条件并返回bool值. 元素运算符/Element Operators IEnumerable<TSource>→TSource Operator 说明 SQL语义 Fi…
本篇将是关于LINQ Operators的最后一篇,包括:集合运算符(Set Operators).Zip操作符.转换方法(Conversion Methods).生成器方法(Generation Methods).集合运算符用语对两个sequence进行操作:Zip运算符同步遍历两个sequence(像一个拉链一样),返回的sequence基于在每一个元素对上应用lambda表达式:转换方法用来将实现了IEnumerable<T>的sequence转换到其他类型的集合,或从其他类型的集合转换…
在本系列博客前面的篇章中,已经对LINQ的作用.C# 3.0为LINQ提供的新特性,还有几种典型的LINQ技术:LINQ to Objects.LINQ to SQL.Entity Framework进行了比较详细的介绍,至此,我们应该了解了各种LINQ技术之间的联系和区别.千里之行始于足下,这些基础理论是理解和使用LINQ的关键.但是我们在前面的文章中对于LINQ查询运算符(LINQ Operators)并没有完整的介绍,这就是接下来这几篇博客中所要做的工作.大家可以按顺序依次对各个LINQ…
本篇文章将从三个方面来进行LINQ扩展的阐述:扩展查询操作符.自定义查询操作符和简单模拟LINQ to SQL. 1.扩展查询操作符 在实际的使用过程中,Enumerable或Queryable中的扩展方法有时并不能满足我们的需要,我们需要自己扩展一些查询操作符以满足需要.例如,下面的例子: var r = Enumerable.Range(1, 10).Zip(Enumerable.Range(11, 5), (s, d) => s + d); foreach (var i in r) { C…
在前面的系列中,我们已经讨论了LINQ简单查询的大部分特性,了解了LINQ的支持计术和语法形式.至此,我们应该可以创建出大部分相对简单的LINQ查询.在本篇中,除了对前面的知识做个简单的总结,还会介绍几种创建更复杂查询的方式,让我们在面对更复杂的场景时也能轻松面对,包括:子查询.创建策略和数据转换. 子查询 在创建一个复杂的查询时,通常我们需要用到子查询.相信大家都记得SQL查询里的子查询,在创建LINQ查询时也是如此.在LINQ中,对于方法语法,一个子查询包含在另外一个查询的lambda表达式…
书写LINQ查询时又两种语法可供选择:方法语法(Fluent Syntax)和查询语法(Query Expression). LINQ方法语法是非常灵活和重要的,我们在这里将描述使用链接查询运算符的方式来创建复杂的查询,方法语法的本质是通过扩展方法和Lambda表达式来创建查询.C# 3.0对于LINQ表达式还引入了声明式的查询语法,通过查询语法写出的查询比较类似于SQL查询.本篇会对LINQ方法语法进行详细的介绍. 当然,.NET公共语言运行库(CLR)并不具有查询语法的概念.所以,编译器会在…
LINQ之路(2):LINQ to SQL本质 在前面一篇文章中回顾了LINQ基本语法规则,在本文将介绍LINQ to SQL的本质.LINQ to SQL是microsoft针对SQL Server的一个ORM的解决方案.既然是ORM,那对象(Object).关系数据(Relation)和映射(Mapping)这三个组成要素是不可或缺的.本文将分为对象和关系数据的映射.从查询表达式到SQL的转换和DataContext数据上下文三个部分来说明. 1.对象和关系数据的映射 通过定义对象和关系数据…
.NET面试题系列目录 当你使用LINQ to SQL时,请使用工具(比如LINQPad)查看系统生成的SQL语句,这会帮你发现问题可能发生在何处. 提升性能的小技巧 避免遍历整个序列 当我们仅需要一个资料的时候,我们可以考虑使用First / FirstOrDefault / Take / Any等方法,它们都会在取得合乎要求的资料后退出,而不会遍历整个序列(除非最后一个资料才是合乎要求的哈哈).而类似ToList / Max / Last / Sum / Contain等方法显而易见会遍历整…
分享一个学习Linq的好博客:Linq之路…
LINQ是.NET Framework 3.5的新特性,其全称是 Language Integrated Query,即语言集成查询,是指将查询功能和语言结合起来.从而为我们提供一种统一的方式,让我们能在C#或VB.NET语言中直接查询和操作各种数据. LINQ的作用 作为软件开发人员,我们很大一部分时间都花在了获取和操作数据上面.而说到数据,我们会自然而然地想到包含在关系数据库里的信息.使用的XML文档.保存在本地的DataSet.内存中的List列表等等.通常我们会对数据进行过滤和定位,查询…