Javen-Studio 咖啡小屋

http://javenstudio.org - C++ Java 分布式 搜索引擎
Naven's Research Laboratory - Thinking of Life, Imagination of Future

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  24 随笔 :: 57 文章 :: 170 评论 :: 4 Trackbacks

LINQ,语言层面的O/R映射技术,用面向对象操作数据库

(原文:http://blogs.msdn.com/danielfe/archive/category/10786.aspx

1       LINQ项目介绍

2005913Anders Hejlsberg PDC2005上首次展示了LINQ项目的第一个Demo。(LINQ Project Home: http://msdn.microsoft.com/netframework/future/linq/

 

你可能会问 LINQ 究竟是什么?

LINQ,全名叫 Language INtegrated Query,它把查询(Query)和设置(set operations)等操作封装起来,就像.NET语言里如 C# VB 最先实现的 SQL statements 查询语句一样。

Query 表达式,也就是你所熟悉并热衷于使用的 SQL 语法如“from”、“where”和“select”等以及其他 C# VB 里最先实现的查询语法。不仅如此,Query 表达式还可用于跨应用领域查询数据。在下面的例子中,示范如何查询对象数据(Objects),就如同查询数据库(Database)中的数据一样容易。

 

LINQ编写的代码是什么样子呢?

下面的例子示范查询一个string数据列表(list),并返回长度为 5 string 数据。

using System;
using
 System.Query;
using
 Danielfe;

class
 Program
{
    
static void Main(string
[] args)
    
{
        
string[] aBunchOfWords = 
{"One","Two""Hello"
  
"World""Four""Five"}
;
     
        var result 
=
    
            from s 
in aBunchOfWords // query the string array 

            where s.Length == 5     // for all words with length = 5
            select s;               // and return the string
        
        
//PrintToConsole is an Extension method that prints the value

        result.Print();
    }

}

 

程序将输出如下结果:

Hello
World

 

LINQ 的奇妙之处在于你可以用它来查询任何数据。下面的例子示范从 SQL Server 2005 中查询所有 Title 长度为 5 Customer 数据:

 

using System;
using
 System.Query;
using
 Danielfe;
using System.Data.DLinq; //DLinq is LINQ for Databases

using nwind; //Custom namespace that is tool generated 

class Program
{
    
static void Main(string
[] args)
    
{
        Northwind db 
= new Northwind("Data Source=(local);Initial Catalog=Northwind;Integrated Security=True"
);   
        Table
<Customers> allCustomers = db.GetTable<Customers>
();

        var result 
=
 
                from c 
in
 allCustomers
                where c.ContactTitle.Length 
== 5

                select c.ContactName;

        result.Print();   
    }

}

Customers 类是一个可以让你的程序访问的对应于数据库表(table 结构的自动生成的类。上面代码的前两行是建立一个数据库连接并获取 Customers 表的数据,下一行是查询所有 ContactTitle 的字符串长度为 5 Customers 并返回其 ContactName 数据,再输出到屏幕。

简单的说,LINQ 可以通过一个统一的标准的方式(类似 SQL 查询语句)很轻松的访问任何一种数据源。

 

 

待续, 译者Naven 2005-10-20

 

posted on 2005-10-21 00:29 Javen-Studio 阅读(1329) 评论(2)  编辑 收藏 引用

评论

# re: LINQ,语言层面的O/R映射技术,用面向对象操作数据库 2007-10-29 09:01 小正
我是一个.NET学习者,看到您的文章,只是不懂以下这些语句是感什么用的?请赐教!我的邮箱是:huchuenzheng1985@126.com
using System;
using System.Query;
using Danielfe;
using System.Data.DLinq; //DLinq is LINQ for Databases
using nwind; //Custom namespace that is tool generated

class Program
{
static void Main(string[] args)
  回复  更多评论
  

# re: LINQ,语言层面的O/R映射技术,用面向对象操作数据库 2007-10-31 18:13 Javen-Studio
相当于Java里的 import 或者 C++里的 include和using namespace作用。
我就是对本文比较感兴趣,翻译一下原文:)  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理