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

走进Linq-Linq大观园

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 12:02  阅读: 25479 次  推荐: 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


C#对Linq的语言层面支持

使用

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

这种方式编写代码,虽然减少了不少工作量,并且编程风格也更加人性化,不过现在C#为我们提供了一些列非常有用的关键字。上面的代码现在你可以这样来编写:

result = from book in books
        
where book.Title.StartsWith("I")
        orderby book.Price
        select 
new { Key=book.Title,Value = book.Price};

from关键字后面跟着的是Func委托的输入参数,in关键字后面跟着一个IEnumerable类型,where,orderby,select对应着那些扩展方法,那些扩展方法接受的委托的输入参数就是from后面的book。实际上你可以把这些代码写成一行意思就更明显了:

result = from book in books where book.Title.StartsWith("I") orderby book.Price select new { Key=book.Title,Value = book.Price};

从books集合里枚举一个book,如果这个book的标题是以”I”开头的就把它加入到返回集合中,并把返回集合按照book的价钱排序将上面的代码编译后的程序集用Reflector反编译,生成的代码是:

books.Where<Book>(delegate(Book book)
{
      
return book.Title.StartsWith("I");
}).OrderBy
<Book, float>(delegate(Book book)
{
      
return book.Price;
}).Select(
delegate(Book book)
{
      
return new { Key = book.Title, Value = book.Price };
});

看来这种方式写和扩展方法调用的方式没有什么差别,那为什么不呢。

5
0

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻