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为数据源,列举一段代码分析一下:
- // ADO.NET中我们会用它提供的SqlConnection, SqlCommand,
SqlDataAdapter,SqlReader, DataSet, 和 DataTable等来访问操作数据库 ;- //使用SqlDataAdapter填充DataSet
- using (SqlConnection conn = new SqlConnection(""))
- {
- DataSet ds = new DataSet();
- SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customers", conn);
- da.Fill(ds);
- }
- //使用SqlDataReader读取数据
- using (SqlConnection connection = new SqlConnection(""))
- {
- connection.Open();
- SqlCommand command = connection.CreateCommand();
- command.CommandText = @"SELECT Name, Country FROM Customers WHERE City = @City";
- command.Parameters.AddWithValue("@City", "Paris");
- using (SqlDataReader reader = command.ExecuteReader())
- {
- while (reader.Read())
- {
- string name = reader.GetString(0);
- string country = reader.GetString(1);
- }
- }
- }
这段代码中,我们只是一个简单的数据读取,不管是使用SqlDataAdapter还是SqlDataReader都会碰到一些问题:
1.如果直接在代码里写语句,不能确保语句的正确性,连基本的SQL语句的关键字也不能保证是否书写正确;而在Linq中把一些常用的关键字如Select、from、where等写成扩展方法,确保在编译时提供语句的验证;
2.查询时使用的参数,和查询返回的结果都是弱类型,而在我们面向对象编程中希望能使用强类型来确保我们程序的正确,这样就需要很多的辅助判断来确保我们传入的参数和得到的结果是符合相应的类型要求;而我们在Linq使用的都是强类型,可以避免这些多余的判断,确保程序能得到编译器的验证,不会等到运行时才捕获到错误;
3.***的问题是,这段代码只适合SQLServer使用,如果使用其它数据库(Oracle,MySQL...),或者其它数据源(xml,文本文件...)就会改动较大,或者重新写方法才能使用,而使用Linq可以有效避免这些问题。以上是学习Linq。
分享文章:学习Linq经验总结
URL网址:http://www.gawzjz.com/qtweb/news39/181339.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联