LINQ to SQL语句(1)Select查询的九种形式
2018-06-22 07:47:26来源:未知 阅读 ()
目录
- 说明
- 简单形式
- 匿名类型形式
- 条件形式
- 指定类型形式
- 筛选形式
- Shaped形式
- 嵌套形式
- 本地调用方法形式
- Distinct形式
说明
与SQL命令中的select作用相似但位置不同,查询表达式select放在表达式的末尾。并把字句中的变量也就是查询结果返回回来。
简单形式
var q = from c in db.Products select c.ProductName;
上述语句描述:实例返回产品名称的序列。只是一个声明而已,但没有去查询数据,会生成了SQL语句,只有当我们需要该数据的时候,它才会执行这条语句,这就是所谓的延迟加载。如果返回是对象的结果集,可以用ToList()、ToArray()来保存该数据。
匿名类型形式
说明:匿名类型是C#3.0中的新特性。其本质是编辑器会自动生成一个匿名的类来存储我们的临时变量。如:var person = new {Name="Jack",Age=15},编辑器会自动创建一个匿名类,这个类有两个属性Name和Age,然后根据数据初始化对象。
var t = from c in db.Products select new { c.ProductName, c.UnitPrice };
上述语句描述:使用select和匿名类型返回产品的产品名称、产品单价的序列。
var a = from c in db.Employees select new { Name = c.FirstName + c.LastName, Phone = c.HomePhone };
上述语句描述:使用select和匿名类型返回雇员的姓名和手机号码的序列,并将FirstName和LastName合并为一个字段Name,将HomePhone重命名为Phoe。
条件形式
说明:生成SQL语句为:case when condition then else。
var b = from c in db.Products select new { c.ProductName, State = c.UnitsInStock - c.UnitsOnOrder > 0 ? "Out Of Stock" : "In Stock" };
上述语句描述:使用select和条件语句返回产品名称和产品的供货状态的序列。
指定类型形式
说明:该形式返回你自定义类型的对象集。
var a = from c in db.Employees select new Person { Name = c.FirstName, Phone = c.HomePhone };
上述语句描述:使用select和已知类型Person,返回姓名和手机号码的序列。
筛选形式
说明:结合Where起到筛选的作用。
var d = from c in db.Products where c.ProductName == "Aniseed Syrup" select c.UnitPrice;
上述语句说明:使用select和Where返回仅含产品名称为Aniseed Syrup的产品单价序列。
shaped形式
说明:select操作中使用了匿名对象,而在这个匿名对象中属性也包含匿名对象。
var e = from c in db.Orders select new { c.OrderID, c.OrderDate, Customer = new { c.Customers.City, c.Customers.Address } };
上述代码描述:使用select返回订单的ID、订单时间、订单客户所在的城市和地址序列。
嵌套形式
说明:返回每个对象集中的DiscountedProducts属性,而此属性也是集合,也就是每个对象的属性结合。
var u = from o in db.Orders select new { o.OrderID, DiscountedProducts = from od in o.Order_Details where od.Discount > 0.0 select od, FreeShippingDiscount = o.Freight };
上述代码描述:使用嵌套查询返回所有订单的OrderID的序列、打折订单中项目的子序列以及免送货所省下的金额。
本地调用方法形式
说明:在本例查询中,调用本地方法来判断单价是否大于20,并返回信息。
var m = from g in db.Products.ToList() select new { g.ProductID, g.ProductName, g.UnitPrice, message = GetMessage(g.UnitPrice) };
GetMessage方法如下:
public string GetMessage(Nullable<decimal> price) { if (price > 20) { return "单价大于20元"; } else { return "单价小于20元"; } }
Distinct形式
说明:筛选不相同的值,用于查询结果集中不重复的数据。
var k = (from j in db.Orders select j.ShipCity).Distinct();
上述代码描述:查询订单覆盖的城市。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:ASP.NET中控件实现分页功能/Repeater控件分页
下一篇:链接字符串
- SqlDataReader指定转换无效的解决方法 2020-03-23
- 让Sqlite脱离VC++ Runtime独立运行的方法 2020-03-03
- 深入浅析.NET应用程序SQL注入 2020-02-23
- 如何在C#中使用SQLite数据库 2019-08-26
- 【转载】如何查看sqlserver客户端的版本号信息 2019-07-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash