查询表达式(LINQ)简介
在上两篇我介绍了C#3.0新语特性和改进,这些新特性在我们编写程序时为我们提供了非常大的帮助。从这篇开始,我们开始一起来探讨LINQ。
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功能等。
说了这么多,我们还是用一个简单的实例说明一下LINQ带来的体验。
第一步:建立dbml(Database Mark Language。数据库描述语言,是一种xml格式的文档,用来描述数据库)文件,以Northwind数据库为例,上述Customers类被映射成一个表,对应数据库中的 Customers表
第二步:创建一个ASP.NET页面,在页面上加入一个GridView控件
第三步:编写代码进行数据绑定
第四步:运行显示结果。
好了,就说这么多吧,大家应该对LINQ有了总体的了解。最后我对LINQ还有一点疑惑,在此提出,请熟悉的朋友来探讨:
- LINQ是在ADO.NET之上的,那么在将来它会代替ADO.NET吗?
- 在大型项目中使用LINQ,它的效率如何呢?
接下来,我们开始从LINQ to SQL语句入手,来全面了解一下LINQ,就从最简单的Where说起吧,这个在编写程序中也最为常用。
Where操作
适用场景:实现过滤,查询等功能。
说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句。
Where操作包括3种形式,分别为简单形式、关系条件形式、First()形式。下面分别用实例举例下:
1.简单形式:
var q =
from c in db.Customers
where c.City == "London"
select c;
var q =
from e in db.Employees
where e.HireDate >= new DateTime(1994, 1, 1)
select e;
2.关系条件形式:
var q =
from p in db.Products
where p.UnitsInStock <= p.ReorderLevel && !p.Discontinued
select p;
var q =
from p in db.Products
where p.UnitPrice > 10m || p.Discontinued
select p;
var q =
db.Products.Where(p=>p.UnitPrice > 10m).Where(p=>p.Discontinued);
3.First()形式:
返回集合中的一个元素,其实质就是在SQL语句中加TOP (1)
Shipper shipper = db.Shippers.First();
Customer cust = db.Customers.First(c => c.CustomerID == "BONAP");
Order ord = db.Orders.First(o => o.Freight > 10.00M);
分享到:
相关推荐
在实际开发中,有时我们需要了解LINQ查询是如何转换为SQL语句的,以便于调试和优化性能。以下将详细介绍几种查看LINQ生成SQL语句的方法。 1. **Debug.WriteLine()** 在使用LINQ查询时,可以利用`Debug.WriteLine()...
"LINQ体验——LINQ to SQL语句之Insert/Update/Delete操作" 在本篇文章中,我们将继续讨论LINQ to SQL语句,重点介绍Insert/Update/Delete操作,这些操作在我们的程序中是最常用的。下面,我们将通过多个示例来详细...
"LINQ体验(4)——LINQ简介和LINQ to SQL语句之Where.docx"文件讲解了LINQ的基本概念和“Where”子句的使用。Where子句是LINQ中最基本的过滤操作,允许你在查询中指定条件来筛选结果。 "LINQ体验(6)——LINQ to SQL...
LINQ to SQL语句之Join和Order By部分代码 语句描述:这个例子在From子句中使用外键导航筛选在西雅图的雇员,同时列出其所在地区。这条生成SQL语句为: SELECT [t0].[FirstName], [t0].[LastName], [t2]....
总的来说,LINQ to SQL的更新功能为开发者提供了直观且强大的工具,使得对数据库的修改变得更加简单和安全。然而,理解其工作原理和最佳实践对于优化性能和处理并发问题是至关重要的。通过熟练掌握这些知识点,...
【描述】"自己学linq to sql时做的demo"表明这个项目是为了学习和理解LINQ to SQL的具体用法而创建的实践案例。在学习过程中,开发者通常会通过创建数据库模型,编写查询语句,实现CRUD(创建、读取、更新、删除)...
通过Linq to Sql,开发者可以直接使用C#或VB.NET来操作SQL Server数据库,无需编写SQL语句。以下是Linq to Sql的一些关键点: 1. **数据模型**:使用Visual Studio的工具,可以从数据库中生成一个数据模型,该模型...
通过使用LINQ-to-SQL,我们可以避免编写大量SQL语句,而是直接在C#代码中进行数据查询、更新和删除操作。 2. 创建LINQ-to-SQL数据上下文: 在开始使用LINQ-to-SQL之前,需要创建一个DataContext类实例,该类代表与...
Where 子句是 Linq to SQL 语句中最基本的子句之一,它用于筛选数据记录。Where 子句可以使用多种形式,包括简单形式、关系条件形式和 First() 形式。 1.1 简单形式: 简单形式的 Where 子句用于筛选数据记录,...
通过Linq To Sql,开发者可以直接在.NET类中编写SQL查询,减少了手写SQL语句的工作量,提高了代码的可读性和可维护性。 2. **基本操作**: - **检索**:使用`DataContext`对象连接数据库,并通过`Table<T>`属性...
它的主要优点在于,可以将数据库表和数据库操作映射到.NET类和方法,从而减少了与数据库交互时的手动编写SQL语句。以下是LINQ to SQL的一些关键概念: 1. **数据库上下文(DataContext)**:这是LINQ to SQL的核心...
在本篇主题“LINQ to SQL语句(23)之动态查询”中,我们将深入探讨如何在运行时构建和执行查询,这对于处理不确定的数据访问需求或构建高度可配置的应用程序特别有用。 动态查询是LINQ的一个关键特性,它允许我们...
8. **存储过程的支持**:虽然LINQ to SQL主要是用于执行简单的SQL语句,但也可以调用存储过程,并将返回的结果映射到对象。 9. **自定义SQL查询**:当标准的LINQ查询无法满足需求时,可以使用ExecuteQuery方法执行...
通过使用LINQ to SQL,可以避免编写SQL语句,提高代码的可读性和可维护性,同时提供编译时错误检查和性能优化。 2. **LINQ to DataSet**: 在.NET环境中,DataSet通常用于存储和操作离线数据。LINQ to DataSet扩展...
LINQ To SQL 作为 LINQ 的一部分,主要用于处理关系型数据库中的数据,它能够将 SQL 查询语句转换为 .NET 语言中的对象操作。 #### 二、Visual Studio 2008 新特性及其对 LINQ 的支持 - **.NET Framework 对重定向...
它提供了将数据库表映射到.NET Framework中类的能力,允许开发人员通过编写LINQ查询而不是SQL语句来操作数据。 #### 二、LINQ to SQL 的基本概念 - **数据上下文(DataContext)**:用于连接数据库并管理对数据库...
在本课程"跟我一起学Visual Studio 2008系列课程(6):语言集成查询(LINQ)之LINQ to SQL"中,我们将深入探讨如何利用LINQ与SQL Server数据库进行高效交互。 **LINQ to SQL**是LINQ的一个特定实现,专门用于与关系...
在本篇内容中,我们将深入探讨LINQ to SQL语句中的运算符转换,这是理解并有效利用LINQ to SQL的关键知识点。 1. **运算符重载** 在LINQ to SQL中,查询表达式通常涉及各种算术、比较和逻辑运算符。这些运算符在C#...
值得注意的是,由于视图是基于查询的,所以在更新或删除视图数据时,LINQ to SQL会尝试生成相应的UPDATE或DELETE SQL语句,但并非所有视图都支持这些操作。如果视图是只读的,或者由于其定义(如包含聚合函数、GROUP...