学习Linq经验总结

  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,

SqlData
Adapter,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。

时间: 2024-10-23 20:02:42

学习Linq经验总结的相关文章

一起谈.NET技术,学习Linq经验总结

Linq有很多值得学习的地方,这里我们主要介绍学习Linq,包括介绍Linq目标是实现语言与数据的深度结合等方面. 上一个系列讲了C#3.0的新特性,为学习Linq做好了铺垫:接下来的一段时间转入学习Linq,上述新特性也会在介绍的过程中提及到. 学习Linq 在我们的软件中,数据的重要性不可言喻,特别是象ERP,CRM等等这类商业应用软件就是围绕着数据转:然而数据的来源各种各样,如存放在内存中的业务对象.存放在xml文件的数据.SqlServer关系数据库...这些数据源的读取操作各不相同,相

学习LINQ工具:LINQPad

LINQPad支持C# 3.0 和 Framework 3.5的全部功能: LINQ to SQL LINQ to Objects LINQ to XML LINQPad 也是一个很好的学习LINQ的工具,包含<C# 3.0 in a Nutshell>一书中200个示例,可以使用LINQPad感受LINQ的超酷功能和函数编程. LINQPad 是完全免费的,无需安装,下载之后直接可以运行,只有2.12 MB大小.LINQPad 需要先安装.NET Framework 3.5,支持 SQL E

用linqPad帮助你快速学习LINQ

在这里我向大家推荐的一个具是LinqPad有了这个工具并熟练使用就可以很快学习并掌握linq linqPad下载地址:http://www.linqpad.net/ 它也自带了很多例子方便大家查询,linqPad支持object ,xml,sql ,  to linq这里我只讲一下sql to linq 好多同学不知道怎么用linq完成 left join ,inner join 等,这里我就用这个工具给大家实现一下 linqpad 会给我们同时生成lambda表达式,sql和IL 我一般情况下

经历6.28百度K站后从中得到的教训以及学习的经验

相信论坛里面大部分人都经历百度6.28K站的黑色风暴,风暴过后,大部分网站都惨不忍睹.特别是靠流量吃饭的个人站长,多少因为网站优化操作失误造成的被K掉或者说直接收录狂减.经历这次洗礼,基本上所有的站长论坛都弥漫着这样的讨论,"明明我的站是正规优化的,为什么还要K掉""坑爹啊,我的网站本来在百度首页,现在基本上都找不到排名了""度娘发疯了,站长也跟着发疯".想必你也是其中一员吧.其实有问题,自己想不明白,来论坛向大家求助是一种很不错的做法,但是一味

通过16道练习学习Linq和Lambda

1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,class from student Linq: from s in Students select new { s.SNAME, s.SSEX, s.CLASS } Lambda: Students.Select( s => new { SNAME = s.SNAME,SSEX = s.SSEX,CLASS = s.CLASS }) 2. 查询教师所有的单位即不重复的Depart列

请介绍一个学习linq入门的地址

问题描述 那位可以介绍linq入门的地址阿. 解决方案 解决方案二:网上搜搜..解决方案三:什么东西解决方案四:http://msdn2.microsoft.com/en-us/library/bb397926(VS.90).aspx

刚学习Linq..有问题了,请大家帮我看看.

问题描述 ///<summary>//////</summary>///<paramname="model"></param>///<paramname="orderBy"></param>///<paramname="ascending"></param>///<paramname="pageIndex"></p

一起谈.NET技术,通过16道练习学习Linq和Lambda

1. 查询Student表中的所有记录的Sname.Ssex和Class列.  select sname,ssex,class from studentLinq: from s in Students select new { s.SNAME, s.SSEX, s.CLASS }Lambda: Students.Select( s => new { SNAME = s.SNAME,SSEX = s.SSEX,CLASS = s.CLASS }) 2. 查询教师所有的单位即不重复的Depart列.

asp.net mvc-ASP.NET MVC4 学习经验分享,和交流。

问题描述 ASP.NET MVC4 学习经验分享,和交流. 求-学习ASP.NET MVC4的学习资料.包含ajax,linq.完整的项目也行! 解决方案 google 蒋金楠 重典,这两个人的blog非常值得你学习. 蒋金楠编写的asp.net mvc4 框架揭秘完全都是干货. 国外方面,微软自己的员工scott hanselman的blog值得你每天关注. 解决方案二: 学习linq推荐微软网站上的linq 101 samples,以及C# in depths这本书,网上有电子版,自己goo