欢迎来到天天文库
浏览记录
ID:34724142
大小:77.18 KB
页数:5页
时间:2019-03-10
《linqtosql语句之selectdistinct》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Select/Distinct操作符适用场景:o(∩_∩)o…查询呗。说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来;延迟。Select/Distinct操作包括9种形式,分别为简单用法、匿名类型形式、条件形式、指定类型形式、筛选形式、整形类型形式、嵌套类型形式、本地方法调用形式、Distinct形式。1.简单用法:这个示例返回仅含客户联系人姓名的序列。varq=fromcindb.Customersselectc.C
2、ontactName;注意:这个语句只是一个声明或者一个描述,并没有真正把数据取出来,只有当你需要该数据的时候,它才会执行这个语句,这就是延迟加载(deferredloading)。如果,在声明的时候就返回的结果集是对象的集合。你可以使用ToList()或ToArray()方法把查询结果先进行保存,然后再对这个集合进行查询。当然延迟加载(deferredloading)可以像拼接SQL语句那样拼接查询语法,再执行它。2.匿名类型形式:说明:匿名类型是C#3.0中新特性。其实质是编译器根据我们自定义自动产生一个匿
3、名的类来帮助我们实现临时变量的储存。匿名类型还依赖于另外一个特性:支持根据property来创建对象。比如,vard=new{Name="s"};编译器自动产生一个有property叫做Name的匿名类,然后按这个类型分配内存,并初始化对象。但是vard=new{"s"};是编译不通过的。因为,编译器不知道匿名类中的property的名字。例如stringc="d";vard=new{c};则是可以通过编译的。编译器会创建一个叫做匿名类带有叫c的property。例如下例:new{c,ContactName,c
4、.Phone};ContactName和Phone都是在映射文件中定义与表中字段相对应的property。编译器读取数据并创建对象时,会创建一个匿名类,这个类有两个属性,为ContactName和Phone,然后根据数据初始化对象。另外编译器还可以重命名property的名字。varq=fromcindb.Customersselectnew{c.ContactName,c.Phone};上面语句描述:使用SELECT和匿名类型返回仅含客户联系人姓名和电话号码的序列varq=fromeindb.Employee
5、sselectnew{Name=e.FirstName+""+e.LastName,Phone=e.HomePhone};上面语句描述:使用SELECT和匿名类型返回仅含雇员姓名和电话号码的序列,并将FirstName和LastName字段合并为一个字段“Name”,此外在所得的序列中将HomePhone字段重命名为Phone。varq=frompindb.Productsselectnew{p.ProductID,HalfPrice=p.UnitPrice/2};上面语句描述:使用SELECT和匿名类型返回所
6、有产品的ID以及HalfPrice(设置为产品单价除以2所得的值)的序列。3.条件形式:说明:生成SQL语句为:casewhenconditionthenelse。varq=frompindb.Productsselectnew{p.ProductName,Availability=p.UnitsInStock-p.UnitsOnOrder<0?"OutOfStock":"InStock"};上面语句描述:使用SELECT和条件语句返回产品名称和产品供货状态的序列。4.指定类型形式:说明:该形式返回你自定义类型
7、的对象集。varq=fromeindb.EmployeesselectnewName{FirstName=e.FirstName,LastName=e.LastName};上面语句描述:使用SELECT和已知类型返回雇员姓名的序列。5.筛选形式:说明:结合where使用,起到过滤作用。varq=fromcindb.Customerswherec.City=="London"selectc.ContactName;上面语句描述:使用SELECT和WHERE返回仅含伦敦客户联系人姓名的序列。6.shaped形式(整
8、形类型):说明:其select操作使用了匿名对象,而这个匿名对象中,其属性也是个匿名对象。varq=fromcindb.Customersselectnew{c.CustomerID,CompanyInfo=new{c.CompanyName,c.City,c.Country},ContactInfo=new{c.ContactName,c.ContactTitle}};语句描述:使用
此文档下载收益归作者所有