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();
上述代码描述:查询订单覆盖的城市。
LINQ to SQL语句(1)Select查询的九种形式的更多相关文章
- LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg (转)
Select/Distinct操作符 适用场景:o(∩_∩)o… 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也 ...
- LINQ to SQL语句(2)Count/Sum/Min/Max/Avg操作符
使用场景 类似于SQL中的聚合函数,用于统计数据,不延迟.如返回序列中的元素数量.求和.最小值.最大值.求平均值. Count 说明:用于返回集合中元素的个数,返回Int类型,生成SQL语句为SELE ...
- LINQ to SQL 语句(2)之 Select/Distinct
LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和 Distinct 介绍 Se ...
- LINQ to SQL语句(2)之Select/Distinct
适用场景:o(∩_∩)o- 查询呗. 说明:和SQL命令中的select作用相似但位置不同,查询表达式中的select及所接子句是放在表达式最后并把子句中的变量也就是结果返回回来:延迟.Select/ ...
- 年终巨献 史上最全 ——LINQ to SQL语句
LINQ to SQL语句(1)之Where 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子句.Where操 ...
- LINQ to SQL语句(9)之Top/Bottom和Paging和SqlMethods
适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强. Take 说明:获取集合的前n个元素:延迟.即只返回限定数量的结果集. var q = ( from e in db.Employ ...
- LINQ to SQL语句非常详细(原文来自于网络)
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
- LINQ to SQL语句
http://kb.cnblogs.com/page/42477/2/ 本系列文章导航 LINQ to SQL语句(1)之Where LINQ to SQL语句(2)之Select/Distinct ...
- LINQ简介和LINQ to SQL语句之Where
LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感 ...
随机推荐
- HttpFileCollection类
最近在学HttpRequest类搞文件上传的时候看到Request.Files返回了HttpFileCollection 这个类的一个对象,这个类用于获取浏览器上传的文件集合,在文件上传的时候可以通过 ...
- hadoop框架结构介绍
近年,随着互联网的发展特别是移动互联网的发展,数据的增长呈现出一种爆炸式的成长势头.单是谷歌的爬虫程序每天下载的网页超过1亿个(2000年数据,)数据的爆炸式增长直接推动了海量数据处理技术的发展.谷歌 ...
- 重置SQL Server sa密码
查询分析器,连接时,身份验证使用"使用windows身份验证" 然后,执行: EXEC sp_password NULL, '新密码', 'Sa'
- POSIX 消息队列 之 概述 链接方式
NAMEmq_overview —— POSIX消息队列概述 DESCRIPTIONPOSIX消息队列允许进程以消息的形式交换数据.此API与System V消息队列(msgget(2),msgsnd ...
- go的module用法
新版不需要项目放在GOPATH里面了,这个恶心的机制之前还被n多人捧臭脚.简单列一下用法 新建项目 cd 项目目录go mod init 项目名 写好代码 go build 或者 go mod tid ...
- javascript 获取视口的高度和宽度
//获取视口的高度和宽度. function windowHeight() { var de = document.documentElement; return self.innerHeight|| ...
- CMSIS DSP Lib:RFFT函数的bug
调用arm_rfft_fast_init_f32之后,还有两个成员需要初始化: arm_rfft_fast_instance_f32::pTwiddleRFFT = twiddleCoef_rfft_ ...
- 【Spring-AOP-学习笔记-4】@After后向增强处理简单示例
说明 After增强处理的作用非常类似于异常处理中的finally块的作用,无论如何,他总会在方法执行结束之后被织入,因此特别适应于垃圾回收. 项目结构 程序 @Component("hel ...
- jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
https://github.com/douglascrockford/JSON-js使用其中的 json2.js 作为兼容.这个JS中的函数将JSON对象转换成JSON字符串,解决 IE6.7.8. ...
- k8s1.4.3安装实践记录(1)-etcd、docker、flannel安装配置
虚拟机:VMware® Workstation 12 Pro 系统:CentOS Linux release 7.2.1511 (Core) 3.10.0-327.el7.x86_64 由于刚开始学习 ...