欢迎来到天天文库
浏览记录
ID:57646097
大小:27.61 KB
页数:8页
时间:2020-08-30
《LINQ体验(5)——LINQ-to-SQL语句之Select、Distinct和Count、Sum、Min、Max、Avg.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQtoSQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQtoObjects、LINQtoDataSets、LINQtoSQL、LINQtoEntities、LINQtoXML,但是相对来说LINQtoSQL在我们程序中使用最多,毕竟所有的数据都要在数据库运行着各种操作。所以先来学习LINQtoSQL,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常用。本篇详细说明一下Select和Count/S
2、um/Min/Max/Avg。Select/Distinct操作符适用场景:o(∩_∩)o…查询呗。说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来;延迟。Select/Distinct操作包括9种形式,分别为简单形式、匿名类型形式、带条件形式、指定类型形式、过滤类型形式、shaped类型形式、嵌套类型形式、LocalMethodCall形式、Distinct形式。1.简单形式:varq=fromcindb.Cust
3、omersselectc.ContactName;注意:这个语句只是一个声明或者一个描述,并没有真正把数据取出来,只有当你需要该数据的时候,它才会执行这个语句,这就是延迟加载(deferredloading)。如果,在声明的时候就返回的结果集是对象的集合。你可以使用ToList()或ToArray()方法把查询结果先进行保存,然后再对这个集合进行查询。当然延迟加载(deferredloading)可以像拼接SQL语句那样拼接查询语法,再执行它。2.匿名类型形式:说明:匿名类型是C#3.0中新特性。其实质是编
4、译器根据我们自定义自动产生一个匿名的类来帮助我们实现临时变量的储存。匿名类型还依赖于另外一个特性:支持根据property来创建对象。比如,vard=new{Name="s"};编译器自动产生一个有property叫做Name的匿名类,然后按这个类型分配内存,并初始化对象。但是vard=new{"s"};是编译不通过的。因为,编译器不知道匿名类中的property的名字。例如stringc="d";vard=new{c};则是可以通过编译的。编译器会创建一个叫做匿名类带有叫c的property。例如下例:n
5、ew{c,ContactName,c.Phone};ContactName和Phone都是在映射文件中定义与表中字段相对应的property。编译器读取数据并创建对象时,会创建一个匿名类,这个类有两个属性,为ContactName和Phone,然后根据数据初始化对象。另外编译器还可以重命名property的名字。varq=fromcindb.Customersselectnew{c.ContactName,c.Phone};语句描述:查询顾客的联系人和电话。varq=fromeindb.Employeess
6、electnew{Name=e.FirstName+""+e.LastName,Phone=e.HomePhone};语句描述:查询职员的姓名和家庭电话varq=frompindb.Productsselectnew{p.ProductID,HalfPrice=p.UnitPrice/2};3.带条件形式:说明:生成SQL语句为:casewhenconditionthenelse。varq=frompindb.Productsselectnew{p.ProductName,Availability=p.Un
7、itsInStock-p.UnitsOnOrder<0?"OutOfStock":"InStock"};4.指定类型形式:说明:该形式返回你自定义类型的对象集。varq=fromeindb.EmployeesselectnewName{FirstName=e.FirstName,LastName=e.LastName};5.过滤类型形式:说明:结合where使用,起到过滤作用。varq=fromcindb.Customerswherec.City=="London"selectc.ContactName;6
8、.shaped类型形式:说明:其select操作使用了匿名对象,而这个匿名对象中,其属性也是个匿名对象。varq=fromcindb.Customersselectnew{c.CustomerID,CompanyInfo=new{c.CompanyName,c.City,c.Country},ContactInfo=new{c.ContactName,c.ContactTitle}};语句描述:查询顾客的ID和公
此文档下载收益归作者所有