部分内容转自:http://www.cnblogs.com/lyj/archive/2008/01/20/1046196.html
LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。并且它同时还使得查询可以方便地对内存中的信息进行查询而不仅仅只是外部数据源。
LINQ定义了一组标准查询操作符用于在所有基于.NET平台的编程语言中更加直接地声明跨越、过滤和投射操作的统一方式,标准查询操作符允许查询作用于所有基于IEnumerable<T>接口的源,并且它还允许适合于目标域或技术的第三方特定域操作符来扩大标准查询操作符集,更重要的是,第三方操作符可以用它们自己的提供附加服务的实现来自由地替换标准查询操作符,根据LINQ模式的习俗,这些查询喜欢采用与标准查询操作符相同的语言集成和工具支持。
我们来总体看看LINQ架构
在.NET3.5下,微软为我们提供了一些命名空间
LINQ包括五个部分:LINQ to Objects、LINQ to DataSets、LINQ to SQL、LINQ to Entities、LINQ to XML。
LINQ to SQL全称基于关系数据的.NET语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能。其建立于公共语言类型系统中的基于SQL的模式定义的集成之上,当保持关系型模型表达能力和对底层存储的直接查询评测的性能时,这个集成在关系型数据之上提供强类型。
LINQ to XML在System.Xml.LINQ命名空间下实现对XML的操作。采用高效、易用、内存中的XML工具在宿主编程语言中提供XPath/XQuery功能等。
VS2008下的使用方法:
数据库使用MS-SQL2008。
新建数据库tutorial,运行以下DDL。
- USE [tutorial]
- GO
- /****** Object: Table [dbo].[User] Script Date: 10/02/2008 13:13:13 ******/
- SET ANSI_NULLS ON
- GO
- SET QUOTED_IDENTIFIER ON
- GO
- SET ANSI_PADDING ON
- GO
- CREATE TABLE [dbo].[User](
- [ID] [int] IDENTITY(1,1) NOT NULL,
- [NAME] [varchar](50) NOT NULL,
- [AGE] [int] NOT NULL
- ) ON [PRIMARY]
- GO
- SET ANSI_PADDING OFF
- GO
可自行适当追加一些数据。
打开VS2008,新建tutorial工程。在工程中新建App_Code文件夹,并新增LinQ To SQL类,命名为User.dbml。
在VS2008的视图菜单下选择服务器资源管理器,添加连接并指向上面新建的数据库,把User表拖曳至User.dbml文件上并保存。
打开默认的Default.aspx,添加GridView。后台代码如下:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- if(!IsPostBack){
- UserDataContext userDC = new UserDataContext();
- GridView1.DataSource = from p in userDC.User
- where p.AGE > 22
- //select new {a = p.NAME};
- select p;
- GridView1.DataBind();
- }
- }
- }
启动Web服务,页面上就会显示出满足条件的数据。