本系列文章导航
不能不说的C#特性-迭代器(下),yield以及流的延迟计算
走进Linq-Linq to SQL How do I(1)
走进Linq-Linq to SQL How do I(2)
走进Linq-Linq to SQL How do I(3)
走进Linq-Linq to SQL源代码赏析 Table
走进Linq-Linq to SQL源代码赏析之Provider的初始化
走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq
话说自从编程大师走了后年轻的Coder很是郁闷了一会儿,他在想,为什么,我还以为是一个伟大的工程,我正准备把我写的代码作为一个opensouce project 分享出去,微软却干了。哎,还是要被微软牵着鼻子走一遭了。
在上一章里介绍了,Linq里那些查询操作都是给IEnumerable接口添加的扩展方法(这些方法在Linq里被称为查询操作符),那么就可以以方法调用的方式使用Linq了:
books.Where(book=>book.Title.StartsWith(“L”)).OrderBy(book=>book.Price).Select(book=>new{key=book.Title,value=book.Price};注意到没有,上面所有的方法都是操作IEnumerable的,然后也是返回IEnumerable类型的对象。可以把这些方法按照用途分个类(一些一看名字就知道意思的我就不做过多说明了):
但是微软的哥们认为这种方式还是不人本化(或者那些哥们说,这样显得Linq太简单了,就添加几个扩展方法,显得咱们多没水平啊),如是他们弄出个“查询表达式”的玩意儿,像俺们这群搞C语系搞多了的人,突然一下子在C#里看到什么from啊,什么select啊,还真有点不习惯,那下面我们就来看看这个查询表达式到底是个啥玩意儿。