languageintegratedquery(linq)中文教程

上传人:xins****2008 文档编号:115953777 上传时间:2019-11-15 格式:DOC 页数:95 大小:798KB
返回 下载 相关 举报
languageintegratedquery(linq)中文教程_第1页
第1页 / 共95页
languageintegratedquery(linq)中文教程_第2页
第2页 / 共95页
languageintegratedquery(linq)中文教程_第3页
第3页 / 共95页
languageintegratedquery(linq)中文教程_第4页
第4页 / 共95页
languageintegratedquery(linq)中文教程_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《languageintegratedquery(linq)中文教程》由会员分享,可在线阅读,更多相关《languageintegratedquery(linq)中文教程(95页珍藏版)》请在金锄头文库上搜索。

1、Language Integrated Query(LINQ)中文教程LINQ初体验之LINQ to Object1一步一步学Linq to sql(一):预备知识4一步一步学Linq to sql(二):DataContext与实体9一步一步学Linq to sql(三):增删改15一步一步学Linq to sql(四):查询句法21一步一步学Linq to sql(五):存储过程35一步一步学Linq to sql(六):探究特性46一步一步学Linq to sql(七):并发与事务53一步一步学Linq to sql(八):继承与关系60一步一步学Linq to sql(九):其它补充6

2、9一步一步学Linq to sql(十):分层构架的例子73Linq To Xml学习80Linq To Xml学习 1. 概述80Linq To Xml学习 2 编程概述82C# 2008 学习笔记 - LINQ to XML87一、命名空间87二、编程方式创建XML文档88三、使用 LINQ 查询创建XML文档89四、加载和解析XML内容90六、遍历内存中的XML文档90七、修改 XML文档92使用linq to xml 快速创建自己的Rss93LINQ初体验之LINQ to ObjectVS2008的发布,最激动人心的不过是LINQ的诞生。Whats LINQ? Language Int

3、egrated Query 是也。说得再明白一些,这是编程语言的一种新特性,能够将数据查询语句集成到编程语言中。目前,LINQ支持的语言有C# 和 VB。为啥会有LINQ,主要还是因为现在的数据格式越来越多,数据库、XML、数组、哈希表每一种都有自己操作数据的方式,学起来费事费力。于是,就有了LINQ诞生的理由以一种统一的方式操作各种数据源,减少数据访问的复杂性。LINQ带来很多开发上的便利。首先,他可以利用Visual Studio这个强大的IDE(这话决不是吹,Visual Studio绝对是最好用的开发工具之一),至少用Visual Studio来写SQL语句,可以有智能感知了,比起从前

4、用查询分析器写存储过程的感觉好多了!其次,它可以把数据当成一个对象来操作,即 Data = Object? 的问题。LINQ目前可以对XML, Object, SQL做数据访问,今后还会有LINQ to Entity的功能。说来惭愧,我也是刚刚才接触LINQ,先从最简单的开始吧,做一个LINQ to Object的例子,实现一个对数组的操作。这个例子套用了今年TechED中海洋兄讲的例子,在此声明。在这个例子中,我会先通过GetMethods的方法,拿到string的所有方法,接下来,就看LINQ的厉害了,这里是选出所有非静态的方法签名。 MethodInfomethods=typeof(st

5、ring).GetMethods(); varresult=fromminmethods wherem.IsStatic!=true selectm.Name; foreach(varrinresult) Console.WriteLine(r.ToString(); Console.ReadLine();例子虽然简单,确能从中看出LINQ的一些端倪。首先,var是什么东东?看起来,有点像javascript里面的弱类型的变量声明。但是,C#是强类型的,尽管你用var来声明,编译器还是可以根据上下文推倒出它当前的类型。比如这个例子里面,result就是IEnumerable 类型的。在这里面,

6、写IEnumerable和写var是一样效果的,显然,var会简单得多。你不用考虑数据操作的返回值是什么类型,还能享受强类型声明带来的方便实惠还有from m in methods这句,m是什么东西,m是隐式声明的一个变量,尽管没有声明,但编译器根据上下文,推断出它的类型是MethodInfo型的!.NET Framework 3.5的编译器的确是聪明了很多 上面这个例子运行起来的结果中有很多重复的记录,我们可以用distinct()来过滤掉重复的,和SQL还是很相似的说。 varresult=(fromminmethods wherem.IsStatic!=true selectm.Name

7、).Distinct();或者用group by 也可以 varresult=fromminmethods wherem.IsStatic!=true groupmbym.Name;但是这样子写,在输出的时候,显示的是 System.Linq.Lookup2+GroupingSystem.String,System.Reflection.MethodInfo,所以,再做一些修改 varresult=fromminmethods wherem.IsStatic!=true groupmbym.Nameintog selectnewMethodName=g.Key,Overload=g.Count

8、();这里面又有一些新鲜的了select new MethodName = g.Key, Overload = g.Count() ,先来看一个简单一些的例子: classMyClass publicstringMethodNameget;set; publicintOverloadget;set; classProgram MyClassmc=newMyClassMethodName=aaa,Overload=2; 大括号里面的叫类初始化器,省去了构造函数,在new的同时,给对象的属性赋值。这时候再回来看看select new MethodName = g.Key, Overload = g

9、.Count() ,跟这个类初始化器很像吧,但是它更偷懒,new一个新对象,居然连类名都不写。没错,这就叫匿名类。不用写类的声明,直接实例化。类的名字是由编译器在编译的时候自动生成的,也就是说,你在new的时候根本不知道这个类叫啥名,因此,这里就只能用var了。这就更看出var的厉害了,不仅仅是写起来方便这么简单,在用到匿名类的时候,没有类名,这时候只能用var,嘿嘿!一步一步学Linq to sql(一):预备知识2007-08-14 09:00 作者: lovecherry 出处: 天极网 责任编辑:dizzarz什么是Linq to sqlLinq to sql(或者叫DLINQ)是LI

10、NQ(.NET语言集成查询)的一部分,全称基于关系数据的 .NET 语言集成查询,用于以对象形式管理关系数据,并提供了丰富的查询功能,它和Linq to xml、Linq to objects、Linq to dataset、Linq to entities等组成了强大的LINQ。要学好LINQ查询语法,就不得不先理解C# 3.0的一些新特性,下面一一简单介绍。隐含类型局部变量 varage=26; varusername=zhuye; varuserlist=newa,b,c; foreach(varuserinuserlist) Console.WriteLine(user);纯粹给懒人用

11、的var关键字,告诉编译器(对于CLR来说,它是不会知道你是否使用了var,苦力是编译器出的),你自己推断它的类型吧,我不管了。但是既然让编译器推断类型就必须声明的时候赋值,而且不能是null值。注意,这只能用于局部变量,用于字段是不可以的。匿名类型 vardata=newusername=zhuye,age=26; Console.WriteLine(username:0age:1,data.username,data.age);匿名类型允许开发人员定义行内类型,无须显式定义类型。常和var配合使用,var用于声明匿名类型。定义一个临时的匿名类型在LINQ查询句法中非常常见,我们可以很方便的

12、实现对象的转换和投影。扩展方法 publicstaticclasshelper publicstaticstringMD5Hash(thisstrings) returnSystem.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s,MD5); publicstaticboolIn(thisobjecto,IEnumerableb) foreach(objectobjinb) if(obj=o) returntrue; returnfalse; /调用扩展方法 Console.WriteLine(123456.MD5Hash(); Console.WriteLine(1.In(new1,2,3);很多时候我们需要对CLR类型进行一些操作,苦于无法扩展CLR类型的方法,只能创建一些helper方法,或者生成子类。扩展方法使得这些需求得意实现,同时也是实现LINQ的基础。定义扩展方法需要注意,只能在静态类中定义并且是静态方法,如果扩展方法名和原有方法名发生冲突,那么扩展方法将失效。自动属性 publicclassPerson publicstringusernameget;protectedset; publ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号