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

走进Linq-Linq大观园

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 12:02  阅读: 25119 次  推荐: 5   原文链接   [收藏]  

系列文章导航:

走进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一边展示着代码,一边念叨着,这里是因为使用了“扩展方法”所以可以这样写,这里使用了Lambda表达式,它可以简化匿名方法的写法,这里......

编程大师一边听着coder的讲解,一遍频频点头:“傻小子,不错啊,有点当年我的影子,按照你这样下去罗马也可以建成了,Linq也是可以写出来的呀。”

Coder听到大师的话兴奋异常,不过他从这句话里还是捕捉到了一个陌生的词汇:Linq。他用诧异的眼神看着大师,问道:”啥是Linq,是谁家又创造了个新词汇?”

大师笑着说,其实你刚才做的微软已经帮你做了,还给它起了一个非常洋气的名字:Linq,中文名字呢就叫做 语言集成查询。

在.net 3.5发布的时候,微软新发布了几个dll,其中有一个就叫做System.Core.dll,在这个dll下对一些System命名空间做了进一步扩展。

在System.Core.dll下的System命名空间下你会发现有这么几个泛型的委托:

//无参,有一个返回值
public delegate TResult Func<TResult>();
//有一个参数和一个返回值,和你那个MyDelegate一样
public delegate TResult Func<T, TResult>(T arg);
//两个参数一个返回值
public delegate TResult Func<T1, T2, TResult>(T1 arg1, T2 arg2);
//三个参数一个返回值
public delegate TResult Func<T1, T2, T3, TResult>(T1 arg1, T2 arg2, T3 arg3);
//四个参数一个返回值
public delegate TResult Func<T1, T2, T3, T4, TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4);

有了这几个泛型的委托基本上都能应付了吧。

还是在这个dll下有个System.Linq命名空间,这是Linq的核心命名空间,这里面有个名为Enumerable的静态类,它里面的方法都是对IEnumerable(这个接口可是Linq的中心人物啊)这个接口的扩展方法。看看,是不是在SQL里能用的这里都能找到了?

Select,Where,OrderBy, OrderByDescending,Average,Distinct

所以你现在很简单的就可以写出像下面这样的代码了:

result = books.Where(book=>book.Title.StartsWith("I"))
     .OrderBy(book=>book.Price)
     .Select(book=>
new{Key=book.Title,Value=book.Price});

编程大师接着说:如果就这样算了,我觉得Linq也不过尔尔,增加一些扩展方法而已,但是现在微软比我们想象的走的更远,现在你不仅仅能对程序中的一些集合对象做这样的查询了,你想想我们平时的程序可以归结为怎样一个等式?

5
0

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻