拼吾爱程序人生.Net编程Linq LINQ体验(4)——LINQ简介和LINQ语句之Where

1  /  1  页   1 跳转 查看:1554

LINQ体验(4)——LINQ简介和LINQ语句之Where

LINQ体验(4)——LINQ简介和LINQ语句之Where

文/lyj  出处/博客园

查询表达式(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语句入手,来全面了解一下LINQ,就从最简单的Where说起吧,这个在编写程序中也最为常用。

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Linq] 的这些文章也感兴趣:

LINQ的分组聚合技术
LINQ 从数据库读数据生成 XML
LINQ to SQL真的已死?
LINQ体验(17)——LINQ to SQL语句之动态查询
Linq to sql--使用自定义的SQL语句
Linq入门与提高
LINQ to SQL公共基类
.Net Compact Framework 3.5对Linq的支持
深入浅出学Linq:通过Linq to SQL看Linq
打造自己的LINQ Provider(上):Expression Tree揭秘
 

回复:LINQ体验(4)——LINQ简介和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);
 
1  /  1  页   1 跳转

快速回复帖子

标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
  [完成后可按 Ctrl+Enter 无刷新发布]  

版权所有 拼吾爱程序人生    Total Unique Visitors:

web counter

Powered by Discuz!NT 2.1.202   Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部