LINQ 学习(一)简介

      很久没有接触LINQ了,由于新换了工作环境,在学习期间,也进行相应的总结与新的学习。

参考文件:1.忘记出处的一份word。
简介
    LINQ 是Language Internet query 即语言集合查询的简写,是集成在.NET 框架中的一种特性,已经成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知,静态类型等强类型语言的好处,并且它同时还得查询可以方便对内存数据的信息进行查询,而不仅仅是外部数据。内存数据如:dataset。
  LINQ是作用于所有基于IEnumerable<T> 接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询操作符集,更重要的是,第三方操作符可以用它们自己的提供附加服务的实现来自由地替换标准查询操作符,根据LINQ模式的习俗,这些查询喜欢采用与标准查询操作符相同的语言集成和工具支持。
    LINQ分为DLinq和XLinq.   

    LINQ 由5个部分组成:
Linq to objects
Linq to Datasets
Linq to SQL
Linq to Entitys
Linq to XML
 
 
 
 
 
     Linq 所支持的数据源有:
            
SQL Server
XML
内存中数据集合
可以使用其扩展框架,添加更多的数据源,如MYSql、Amazon等
 
 
 
 
     Linq 查询语言的特点是可以并行执行。通过 Plinq,即并行处理的Linq类库。将Linq 转换为PLinq只要将结果集.asParallel即可。Plinq 将通过三种方式执行:
     1.管道处理:一个线程用来读取数据源,其他进程用来处理查询语句,二者同步进行。需要处理好负载均衡才不会浪费内存。
     2.“stop and go”:用于处理结果集,需要被一次性返回时的情况,如(ToList等或对结果进行排序),在这个模式下,将依次完成各个处理过程,并将结果一次性返回给消费者线程。这个模式在性能上优于第一种模式,因为他省去了原来在用来保持线程同步所花费的开销。
    3.inverted enumeration:该方法并不需要实现收集到所有的输出,然后在单一的线程中处理,而是将最终调用的函数通过ForAll扩展传递到每个线程中。这是目前为止最快的一种处理模式,不过这需要传递到ForAll中的函数是线程安全的,且最好不包含任何lock之类的互斥语句。
  若是PLINQ中任意的一个线程抛出异常,那么所有的其他线程将会被终止。若是抛出了多个异常,那么这些异常将被组合成一个MultipleFailuresException类型的异常,但每个异常的调用堆栈仍会被保留。
posted @ 2015-04-20 14:30  梅花香自苦寒来_rainy  阅读(128)  评论(0)    收藏  举报