LINQ
本章内容:用List<T>在对象上执行传统查询,扩展方法,LINQ查询操作符,平行LINQ,表达式树等 。
语言集查询(Language Integrated Query: Linq)集成了C#编程语言中的查询语法,可以用相同的语法访问不同的数据源,LINQ提供了不同数据源的抽象层,所以可以使用相同的语法。
一、概述
C#提供了转换为方法调用的集成查询语言。
LINQ查询的语法:查询表达式必须以From子 句开头,以Select或 group子 句绮束。 在这两个子句之间,可 以 使用where、 orderby、join、let和 其他from子 句。子 句 from、 where、 orderby、descending 和 select都是这个查询中 预定义的关键字。
扩展方法
定义 LINQ扩 展方法的一个类是 system.Linq名 称空间中的 Enunerable 。只需导入这个名称空间,就 打开了这个类的扩展方法的作用域。
这里的扩展方法如Where<T>(),在System.Core程序集的System.Linq名称空间中定义。
Enumerable 类 中的扩展方法 Where()、 OrderbyDescending()和select()。 这些方法都返回 IEnumerable<TSource>。在 运行期间定义查询表达式时,查询就不会运行。查询会在迭代数据项时运行.。但在调用扩展方法 ToArray(),ToEnumerable(),ToList()等 可以 改变这个操作。
二、标准的查询操作符
示例:
筛选,索引筛选,类型筛选,排序,分组,复合From语句,对嵌套的对象分组,连接 ,集合操作(Distinct(),Union(),Intersect(),Except()等),合并(Zip()),分区(Take(),Skip();使用TackWhile()和SkipWhile()扩展方法,还可以 传递一个谓词,根据谓词的 结果提取或跳过某些项。),聚合操作符(Count(),Sum(),Min(),Max(),Average(),Aggregate()),转换(ToList()等方法,生成操作符(Range()、 Empty()和 Repeat()不是扩展方法,而是返回序列的正常静态方法。 在 LINQ To Objects中 ,这些方法可用于 Enumerable类。)
三、并行Linq
.net4在System.Linq名称空间中包含一个新类ParallelEnumerable,可以查询的工作使其分布在多个纯种上。尽管Enumerable类给IEnumerable<T>接口定义了扩展方法,但ParallelEnumerable类的大多数扩展方法是ParallelQuery<TSource>类的扩展。一个重要的例外是AsParallel()方法,它扩展了IEnumerable<TSource>接口,返回ParallelQuery<TSource>类,所以正常的集合类可以以平行方式查询。
1.并行查询
2.分区器
3.取消
四、表达式树??
五、Linq提供程序
Linq to XML
Linq to Objects
Linq to SQL
这部分应该是一个大的技术分支,之前的有些用过了,还算能看明白,可是后来的都没怎么听过,就看不明白了。以后慢慢研究吧~~先这里做个简单的理解~~