配色: 字号:
LINQ to SQL语句查询的九种形式
2017-04-24 | 阅:  转:  |  分享 
  
LINQtoSQL语句之Select查询的九种形式目录http://www.cnblogs.com/liujie2272/p/67324
61.html说明http://www.cnblogs.com/liujie2272/p/6732461.html简单形式http
://www.cnblogs.com/liujie2272/p/6732461.html匿名类型形式http://www.cnbl
ogs.com/liujie2272/p/6732461.html条件形式http://www.cnblogs.com/liuji
e2272/p/6732461.html指定类型形式http://www.cnblogs.com/liujie2272/p/673
2461.html筛选形式http://www.cnblogs.com/liujie2272/p/6732461.htmlShap
ed形式http://www.cnblogs.com/liujie2272/p/6732461.html嵌套形式http://ww
w.cnblogs.com/liujie2272/p/6732461.html本地调用方法形式http://www.cnblogs
.com/liujie2272/p/6732461.htmlDistinct形式说明与SQL命令中的select作用相似但位置不同
,查询表达式select放在表达式的末尾。并把字句中的变量也就是查询结果返回回来。1、简单形式varq=fromcin
db.Productsselectc.ProductName;上述语句描述:实例返回产品名称的序列。只是一个声明而已,但没有去
查询数据,会生成了SQL语句,只有当我们需要该数据的时候,它才会执行这条语句,这就是所谓的延迟加载。如果返回是对象的结果集,可以用
ToList()、ToArray()来保存该数据。2、匿名类型形式说明:匿名类型是C#3.0中的新特性。其本质是编辑器会自动生成一
个匿名的类来存储我们的临时变量。如:varperson=new{Name="Jack",Age=15},编辑器会自动创建一
个匿名类,这个类有两个属性Name和Age,然后根据数据初始化对象。vart=fromcindb.Productss
electnew{c.ProductName,c.UnitPrice};上述语句描述:使用select和匿名类型返回产品
的产品名称、产品单价的序列。vara=fromcindb.Employeesselectnew{Name=
c.FirstName+c.LastName,Phone=c.HomePhone};上述语句描述:使用select和
匿名类型返回雇员的姓名和手机号码的序列,并将FirstName和LastName合并为一个字段Name,将HomePhone重命名
为Phoe。3、条件形式说明:生成SQL语句为:casewhenconditionthenelse。varb=fro
mcindb.Productsselectnew{c.ProductName,State=c.UnitsInS
tock-c.UnitsOnOrder>0?"OutOfStock":"InStock"};上述语句描述:
使用select和条件语句返回产品名称和产品的供货状态的序列。4、指定类型形式说明:该形式返回你自定义类型的对象集。vara
=fromcindb.EmployeesselectnewPerson{Name=c.FirstName,
Phone=c.HomePhone};上述语句描述:使用select和已知类型Person,返回姓名和手机号码的序列。5、筛
选形式说明:结合Where起到筛选的作用。vard=fromcindb.Productswherec.Produ
ctName=="AniseedSyrup"selectc.UnitPrice;上述语句说明:使用select和Wher
e返回仅含产品名称为AniseedSyrup的产品单价序列。6、shaped形式说明:select操作中使用了匿名对象,而在这个
匿名对象中属性也包含匿名对象。vare=fromcindb.Ordersselectnew{c.OrderI
D,c.OrderDate,Customer=new{c.Customers.City,c.Customers.Ad
dress}};上述代码描述:使用select返回订单的ID、订单时间、订单客户所在的城市和地址序列。7、嵌套形式?说明:返回
每个对象集中的DiscountedProducts属性,而此属性也是集合,也就是每个对象的属性结合。varu=fromo
indb.Ordersselectnew{o.OrderID,DiscountedProducts=fromo
dino.Order_Detailswhereod.Discount>0.0selectod,FreeShipp
ingDiscount=o.Freight};上述代码描述:使用嵌套查询返回所有订单的OrderID的序列、打折订单中项目的
子序列以及免送货所省下的金额。8、本地调用方法形式说明:在本例查询中,调用本地方法来判断单价是否大于20,并返回信息。varm
=fromgindb.Products.ToList()selectnew{g.ProductID,g.Prod
uctName,g.UnitPrice,message=GetMessage(g.UnitPrice)};?GetMes
sage方法如下:publicstringGetMessage(Nullableprice){if
(price>20){return"单价大于20元";}else{return"单价小于20元";}}8、?Distinct形式说明:筛选不相同的值,用于查询结果集中不重复的数据。vark=(fromjindb.Ordersselectj.ShipCity).Distinct();上述代码描述:查询订单覆盖的城市。
献花(0)
+1
(本文系csbarcode首藏)