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

走进Linq--Linq横空出世篇

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

系列文章导航:

走进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#和两天SQL的coder在那里发牢骚,为啥我要写这么多for,这么多if才能查询出我需要的数据,为啥我不能像SQL那样,发送一条命令告诉数据库我需要啥样的数据,它就给我返回来。

编程大师如是说:傻小子,像SQL那叫第四代编程语言,常存在于象牙塔和研究所里面的学究语言,还有个高雅的名字:函数编程。它只需要你告诉它要什么,而不需要告诉它怎么做。而你使用的C#语言属于命令式编程,你必须像发送命令一样一步步的告诉你的机器怎么做。

发牢骚的coder回了一句:不懂,我只是想不通,数据库能做这样的处理,为啥C#这么牛的语言不能呢。 编程大师心里想着:这是不可能的事情,因为C#它是强类型语言,)*&)(&)*)()*&%&%&^(后面省去200字)。

天色还未晚,编程大师就急匆匆的回家了,他心里一直记着那位发牢骚的coder的话:为什么不能,为什么不能。

晚上,编程大师做了一个梦,一个奇怪的梦,他的师傅“白眉”只说了三个字母:DSL。

编程大师想着,DSL,领域专用语言,师傅要对我说什么呢,难道和今天我遇见的事有关?

上面这段文字是一段调侃,调节一下气氛,呵呵。

我觉得Linq就是一种DSL,在C#等常规语言上抽象起来的,面向数据处理领域的特定“语言”,当然,它的根基还是这些常规语言。

select,from,where,group等关键字本来只是在SQL里出现,现在把它们引入到C#这些常规编程语言中。

那C#等是如何做到的呢?是在CLR底层支持的么?不是。既然“编译器”可以将C#编译成MSIL,那为什么编译不能干更多一点事情?将这些为了领域编程而出现关键字编译成原始语法。

下面还是从实例来说明吧:

我们有一个图书类Book,先已经有一个填充有数据的Book集合,我们需要从这个集合里查找出单价小于50的书籍:

using System;
/// 
/// 图书类
/// 

public class Book
{
    
/// 
    
/// 图书名称
    
/// 

    public string Title getset; }
    
/// 
    
/// 单价
    
/// 

    public float Price getset; }
    
/// 
    
/// 作者
    
/// 

    public string Author getset; }
    
/// 
    
/// ISBN号
    
/// 

    public string ISBN getset; }
}
13
4

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻