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编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感 ...
随机推荐
- TortoiseSVN使用步骤和trunk,Branch,Tag详细说明
1 安装及下载client 端 2 什么是SVN(Subversion)? 3 为甚么要用SVN? 4 怎么样在Windows下面建立SVN Repository? 5 建立一个Working目录 6 ...
- Java8 lam。。。表达式
双冒号:相当于用了别人实现的方法,格式,类名::方法 Math::max等效于(a, b)->Math.max(a, b)String::startWith等效于(s1, s2)->s1. ...
- 【python】python中__name__的使用
Py1.py #!/usr/bin/env python def test(): print '__name__ = ',__name__ if __name__ == '__main__': tes ...
- DokuWiki
DokuWiki 1.点我,点我,dokuwiki使用教程一 2.点我,点我,dokuwiki使用教程二 3.点我,点我,dokuWiki语法 4.点我,点我,WARP插件
- bzoj2458 最小三角形
Description Xaviera现在遇到了一个有趣的问题.平面上有N个点,Xaviera想找出周长最小的三角形.由于点非常多,分布也非常乱,所以Xaviera想请你来解决这个问题.为了减小问题的 ...
- java操作Excel之POI(4)利用POI实现数据的批量导出
后台导出方法: /** * 后台导出方法 * 利用POI实现数据的批量导出 */ public String export() throws Exception{ Connection con = n ...
- 软件-分布式:Kylin (apache开源分布式分析引擎软件)
ylbtech-软件-分布式:Kylin (apache开源分布式分析引擎软件) Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以 ...
- HTML5: input:file上传类型控制
ylbtech-HTML5: input:file上传类型控制 1. 一.input:file 属性返回顶部 一.input:file属性 属性值有以下几个比较常用: accept:表示可以选择的 ...
- 1116 Come on! Let's C (20 分)
1116 Come on! Let's C (20 分) "Let's C" is a popular and fun programming contest hosted by ...
- MongoDB对Javascript的支持
在项目中MongoDB的Map-Reduce功能做了许多统计任务,在重构代码的时候修改了_id对象里面的属性字段名称,当用db.collection.update({$rename:{"_i ...