当前位置: 首页 > 互联网 > 正文

Linq学习之《LINQ In Action》

Linq的知识一直都没有系统的学习过。只知道其语言格式大概类似Sql语句,可以用from, where, orderby, select等查询关键字结合起来使用,也略知其执行的结果是一个序列集合。对于其它的细节了解不多,因为目前Entityframework的应用越来越广泛了,大量的MVC实例都基本以其作为与数据库交互的接口,所以补上Linq的基础知识也越来越显得必需了。经过半个月的学习,现将简评书写如下:

一,和其它书籍类似,书本的开始演示了几个简单的Linq运用例子。然后介绍了.NET Framework 为引入Linq所必需要的语言支持。比如:隐式类型变量;对象和集合初始化;Lambda表达式;扩展方法以及匿名类型。所有这些特性为Linq方法提供了技术支撑。接下又介绍了一个Linq块的组成,分别介绍了Linq的延迟执行,查询操作符与查询表达式关系,以及表达式树及其构建等等。重点是对扩展方法与Lambda表达式的掌握。

二,在简要的介绍了Linq知识后,该书又分块详细介绍了Linq2Objects, Linq2Sql, Linq2Xml 技术。在 Linq2Objects 中详细介绍了一些查询操作符,比如 Where, Select, Skip, Take, Join, OrderBy 等等多种类型的操作符的运用。在 Linq2Objects 时需要考虑语句的性能,要注意立即执行带来的性能影响,注意表达式的执行效率等等。文中的例子还是非常有启发的作用。在Linq2Sql中介绍了数据库表到代码的 Mapping, 及一些生成Mapping的工具。Linq2Sql 与 Linq2Objects 的不同是 Linq2Sql 操作的是 IQueryable<T> 对象,查询表达式对应的表达式树会最终转化成数据库中可以直接执行的SQL语句。可以运用Linq表达式进行查找,更新,删除等操作。要注意Linq操作中的并发操作中可能产生的数据冲突,需要了解相应处理冲突的方法。文中介绍了如何在Linq表达式调用存储过程或者数据库函数来得到相应的结果。最后介绍了一些改善Linq2Sql中的业务逻辑层的方法与思路,比如扩展实体类,分部方法等等。在我看来Linq2Entity会让这部分知识变得鸡肋,接下来学习下EntityFramework的相关知识显得更符合现在的应用。最后作者详细介绍了Linq2XML的相关知识。从Linq2XML的设计原则,操作对象,简单的XML操作API(创建,添加,删除,属性,保存),再到Linq2XML的核心方法(Element(s),Attribte,Descendants,Ancestors等)在查询表达式中的应用,并在此基础上进行标准查询操作(投影,过滤,排序,及分组等等)。Linq2XML为操作XML文件提供了极大的便利,自我认为这是本书最精彩,也是印象最深的部分。

三,最后部分介绍了Linq的自扩展,及所有上述技术在具体例子中的应用。阅读示例源码能帮你更好的掌握这些知识。

根据书本的说明,Linq技术其实是一个工具,只是编译器的增强,对CLR并没有多少改变。Linq技术在很大程度上减少了程序员的代码量,增加了代码的阅读性。当然,我们也了解到,正因为这是个工具,所以某些操作会牺牲系统的一点性能。因此,我们需要根据现实实际来决定我们选用Linq技术是值得的,在具体的实践中选择恰当的方法来处理我们的应用。相信学好了Linq对接下来学习EntityFramework也会有很大的帮助。

本文固定链接: http://www.byhard.com/?p=1044 | 海纳百川

该日志由 byhard 于2013年07月30日发表在 互联网 分类下,
原创文章转载请注明: Linq学习之《LINQ In Action》 | 海纳百川
关键字: ,
【上一篇】
【下一篇】

Linq学习之《LINQ In Action》:目前有5 条留言

  1. 实用才是根本,赞一个

    2013-07-31 19:50
    • byhard:

      嗯,学习致用很关键。

      2013-07-31 20:46
  2. 板凳
    广东硅谷学院:

    不错,赞一个。(学好IT好就业,就读硅谷学院)

    2013-07-31 20:15
    • byhard:

      谢谢支持啦。科班出身啊,可是我学得不够。

      2013-07-31 20:46
  3. 沙发
    博客丛:

    过来看看,周五啦,明天就能休息了!

    2013-08-02 13:41