LINQ to SQL语句(1)Select查询的九种形式
目录
说明
与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 > ? "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 > )
{
return "单价大于20元";
}
else
{
return "单价小于20元";
}
}
Distinct形式
说明:筛选不相同的值,用于查询结果集中不重复的数据。
var k = (from j in db.Orders select j.ShipCity).Distinct();
上述代码描述:查询订单覆盖的城市。
最新文章
- Go语言并发编程示例 分享(含有源代码)
- easyui datebox 设置不可编辑
- 使用IntelliJ Idea创建Spring MVC项目
- ci框架学习告一段落,总结一下
- SpringMVC整合Mybatis的流程
- C语言可变参数
- stylus导入时 报错These relative modules were not found
- XML与HTML的主要差异
- JMeter3.0 post参数/BeanShell中文乱码问题
- centos7 ssh连接慢
- 如何在Ubuntu中安装中文输入法
- C# 运用反射把实体类反射成你所想要的格式
- ORACLE 把不是SYS用户下的所有JOB删除掉
- SRM477
- 堆内存泄漏移除导致tcp链接异常高
- 20145234黄斐《Java程序设计》实验三—敏捷开发与xp实践
- vue-router核心概念
- 《Java编程思想》笔记 第六章 访问权限控制
- 关于asp.net调用gemalto超级狗api的具体实现
- Spring boot 官网学习笔记 - Spring Boot CLI 入门案例
热门文章
- smarty学习——组合修改器
- PHP独立环境搭建细节
- 【转】每天一个linux命令(16):which命令
- Oracle ASM 详解
- bzoj 3611(洛谷 4103) [Heoi2014]大工程——虚树
- 查看 linux cpu 、内存、服务器型号和序列号、磁盘、raid 的信息
- JZ2440 裸机驱动 第8章 NAND Flash控制器
- C# DateTime 月第一天和最后一天 取法
- Sql中判断";数据库";、";表";、";临时表";、";存储过程";和列";是否存在
- ";二阶“条件概率