学习Linq经验总结

开发 后端
这里介绍学习Linq,Linq以统一的数据访问方式访问各种数据源,以相同的方式读取数据,象SQL语句一样进行查询,而这些都是整合在我们熟悉的编程语言如C#。

Linq有很多值得学习的地方,这里我们主要介绍学习Linq,包括介绍Linq目标是实现语言与数据的深度结合等方面。

上一个系列讲了C#3.0的新特性,为学习Linq做好了铺垫;接下来的一段时间转入学习Linq,上述新特性也会在介绍的过程中提及到。

学习Linq

在我们的软件中,数据的重要性不可言喻,特别是象ERP,CRM等等这类商业应用软件就是围绕着数据转;然而数据的来源各种各样,如存放在内存中的业务对象、存放在xml文件的数据、SqlServer关系数据库...这些数据源的读取操作各不相同,相互之间的转换也不是那么容易;为此VS.Net提供了各种技术来支持这些数据源的操作,如操作数据库的ADO.Net,操作xml文件的API(XmlDocument, XmlReader, XPathNavigator等),以及一些存放在内存中的数据的操作(数组,参数变量,类,泛型等等);如今在C#3.0中提供了一种新技术来整合处理各种数据操作的问题,这就是Linq;

Linq目标是实现语言与数据的深度结合,Linq以统一的数据访问方式访问各种数据源,以相同的方式读取数据,象SQL语句一样进行查询,而这些都是整合在我们熟悉的编程语言如C#,VB当中,另外Linq是使用强类型,并提供编译时检查和VS的智能感知特性等。

下面我们以SQLServer为数据源,列举一段代码分析一下:

  1. // ADO.NET中我们会用它提供的SqlConnection, SqlCommand, 
    SqlDataAdapter,SqlReader, DataSet, 和 DataTable等来访问操作数据库 ;  
  2. //使用SqlDataAdapter填充DataSet  
  3. using (SqlConnection conn = new SqlConnection(""))  
  4. {  
  5. DataSet ds = new DataSet();  
  6. SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", conn);  
  7. da.Fill(ds);  
  8. }  
  9.  //使用SqlDataReader读取数据  
  10. using (SqlConnection connection = new SqlConnection(""))  
  11. {  
  12.  
  13. connection.Open();  
  14. SqlCommand command = connection.CreateCommand();  
  15. command.CommandText = @"SELECT Name, Country FROM Customers WHERE City = @City";  
  16. command.Parameters.AddWithValue("@City", "Paris");  
  17.  
  18. using (SqlDataReader reader = command.ExecuteReader())  
  19. {  
  20. while (reader.Read())  
  21. {  
  22. string name = reader.GetString(0);  
  23. string country = reader.GetString(1);  
  24.  
  25. }  
  26. }  
  27. }

这段代码中,我们只是一个简单的数据读取,不管是使用SqlDataAdapter还是SqlDataReader都会碰到一些问题:

1.如果直接在代码里写语句,不能确保语句的正确性,连基本的SQL语句的关键字也不能保证是否书写正确;而在Linq中把一些常用的关键字如Select、from、where等写成扩展方法,确保在编译时提供语句的验证;

2.查询时使用的参数,和查询返回的结果都是弱类型,而在我们面向对象编程中希望能使用强类型来确保我们程序的正确,这样就需要很多的辅助判断来确保我们传入的参数和得到的结果是符合相应的类型要求;而我们在Linq使用的都是强类型,可以避免这些多余的判断,确保程序能得到编译器的验证,不会等到运行时才捕获到错误;

3.***的问题是,这段代码只适合SQLServer使用,如果使用其它数据库(Oracle,MySQL...),或者其它数据源(xml,文本文件...)就会改动较大,或者重新写方法才能使用,而使用Linq可以有效避免这些问题。以上是学习Linq。

【编辑推荐】

  1. LINQ Customers类概括
  2. LINQ查询操作全面分析
  3. LINQ to SQL的Table剖析
  4. Linq数据分组全面描述
  5. LINQ查询基础概括
责任编辑:佚名 来源: IT168
相关推荐

2009-09-08 10:57:55

LINQ查询操作

2009-09-11 13:29:31

LINQ查询操作

2009-09-16 17:44:54

LINQ to SQL

2009-09-08 16:02:47

Linq使用Group

2009-09-09 17:14:17

Linq lambda

2011-07-08 13:15:52

JSP

2013-12-18 15:54:21

2010-06-13 13:44:07

UML学习笔记

2011-07-21 13:40:17

java

2009-08-13 18:13:27

C#学习经验

2010-06-02 09:06:26

SVN学习

2009-08-11 14:20:41

C# .NET学习经验

2009-10-15 09:27:00

2010-01-05 16:46:14

学习.NET Fram

2009-09-01 13:10:39

C#读取Word

2009-09-29 16:32:11

OJB Hiberna

2009-08-19 09:24:43

AJAX引擎经验总结

2009-12-22 18:36:17

WCF知识结构

2009-08-07 09:47:17

C#枚举C#数组

2009-09-11 12:08:09

Linq to SQL
点赞
收藏

51CTO技术栈公众号