您的位置:知识库 » 数据库

走进Linq-Linq to Objects(上)基础篇

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 18:18  阅读: 13402 次  推荐: 3   原文链接   [收藏]  
[1] 走进Linq-Linq to Objects(上)基础篇
[2] 走进Linq-Linq to Objects(上)基础篇

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进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-How do I(4)拾遗补零篇第一节

走进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类型的对象。可以把这些方法按照用途分个类(一些一看名字就知道意思的我就不做过多说明了)

用途

方法

映射的(就是将查询的结果映射成需要的结果)

Select(2个重载),SelectMany(4个重载)

条件过滤

Where(2个重载)OfType(这个方法是对IEnumerable扩展的,使用的时候要带上泛型参数,books.OfType(),意思就是从books集合里遍历元素,如果这个元素是Book类型或其子类型就将其添加到返回集合中)

排序(注意排序的方法放回的是继承自IEnumerableIOrderedEnumerable)

OrderBy(2个重载), OrderByDescending(2个重载), Reverse(不干别的,就是把IEnumerable的顺序倒一下), ThenBy, ThenByDescending(这两个是对IOrderedEnumerable的扩展方法,所以它只能用在OrderBy后面,它的作用就是在一个已排序的系列上再按照某个key排序一次)

分组

GroupBy(8个重载), ToLookup(4个重载,它们的作用是根据一个keyIEnumerable转化为一个ILookUp对象,这个对象将按照key分组元素)

联结

GroupJoin,Join

转型

Cast(Linq只能操作泛型的集合!谁告诉你Linq只能操作泛型的集合?这个方法就是干这事情的,它是对IEnumerable扩展的一个方法,将一个IEnumerable转型为IEnumerable,然后你就可以享受Linq了,比如我用ArrayList保存一个User集合,ArrayList users = new ArrayList();但是Linq的那些什么Where啊,并没有对ArrayList所实现的接口IEnumerable进行扩展,怎么办?CastIEnumerable myUsers = users.Cast();就这么简单)

但是微软的哥们认为这种方式还是不人本化(或者那些哥们说,这样显得Linq太简单了,就添加几个扩展方法,显得咱们多没水平啊),如是他们弄出个“查询表达式”的玩意儿,像俺们这群搞C语系搞多了的人,突然一下子在C#里看到什么from啊,什么select啊,还真有点不习惯,那下面我们就来看看这个查询表达式到底是个啥玩意儿。

[第1页][第2页]
3
0
标签:linq objects

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻