技术开发 频道

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


【IT168技术文档】

  1 LINQ项目介绍

  在 2005年9月13日,Anders 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 查询语句)很轻松的访问任何一种数据源。
0
相关文章