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编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感 ...
随机推荐
- IBM DS存储存储性能调优
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jaminwm/article/details/26458791 ibm存储适用,其它存储有相似參数. ...
- FastAdmin 开发时对数据库进行版本管理 (非 think-migration)
因为开必项目,暂时还不没用 think-migration,先用 脚本处理. 在导出 SQL 时将相关字段数据还原,比如 admin logitime updatetime token. 把 admi ...
- 使用 extract-text-webpack-plugin 报错:Error: Chunk.entry was removed. Use hasRuntime()
问题:使用 extract-text-webpack-plugin 报错:Error: Chunk.entry was removed. Use hasRuntime() 解决:先运行npm unin ...
- WeakHashMap 理解
WeakHashMap 通过 expungeStaleEntries 这个函数的来实现:移除其内部不用的条目,从而达到自动释放内存的目的. 基本上只要对 WeakHashMap 的内容进行访问就会调用 ...
- golang 自定义类型的排序sort
sort包中提供了很多排序算法,对自定义类型进行排序时,只需要实现sort的Interface即可,包括: func Len() int {... } func Swap(i, j int) {... ...
- github for windows 使用
先在github上申请账号,已有略过. 下载github for windows安装,可以提前安装.NET FRAMEWORK 4.0,否则它会在线下载安装.NET 4. 安装后登录账号,不要急着CL ...
- javadoc 文档
Java 文档 // 注释一行/* ...... */ 注释若干行/** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写法如下: /*** .........* . ...
- 大数据工具篇之flume1.4-安装部署指南
一.引言 flume-ng是一个分布式.高可靠和高效的日志收集系统,flume-ng是flume的新版本的意思,其中“ng”意为new generate(新一代),目前来说,flume-ng 1.4是 ...
- 史上最详细 Python第三方库添加方法 and 错误解决方法
(1):如何添加python第三方库(方法一): File ->> Settings... ->> Project Interpreter (2):如何添加python第三方库 ...
- 关于json_encode()的使用注意
json_encode($json_str,true)在一般情况下可以返回一个数组,但当$json_str的字符编码是GBK或其它时,返回的是一个 空数组,必须用iconv(‘gbk’,‘ut8//I ...