order by操作。
适用场景:对查询出的语句进行排序,比如按时间排序等等。
说明:按指定表达式对集合排序;延迟,:按指定表达式对集合排序;延迟,默认是升序,加上descending表示降序,对应的扩展方法是orderby和orderbydescending
1.简单形式。
这个例子使用 orderby 按雇用日期对雇员进行排序:
var q =
from e in
orderby
select e;
说明:默认为升序。
2.带条件形式。
注意:where和order by的顺序并不重要。而在t-sql中,where和order by有严格的位置限制。
var q =
from o in
where ==london"
orderby
select o;
语句描述:使用where和orderby按运费进行排序。
3.降序排序。
var q =
from p in
orderby descending
select p;
语句描述:使用复合的 orderby 对客户进行排序,进行排序:
var q =
from c in
orderby
select c;
说明:按多个表达式进行排序,例如先按city排序,当city相同时,按contactname排序。这一句用lambda表达式像这样写:
var q =
.orderby(c =>
.thenby(c =>
在t-sql中没有thenby语句,其依然翻译为orderby,所以也可以用下面语句来表达:
var q =
.orderby(c =>
.orderby(c =>
所要注意的是,多个orderby操作时,级连方式是按逆序。对于降序的,用相应的降序操作符替换即可。
var q =
.orderbydescending(c =>
.thenbydescending(c =>
需要说明的是,orderby操作,不支持按type排序,也不支持匿名类。比如
var q =
.orderby(c =>new
).tolist();
会被抛出异常。错误是前面的操作有匿名类,再跟orderby时,比较的是类别。比如。
var q =
.select(c =>new
.orderby(c =>c).tolist();
如果你想使用orderby(c =>c),其前提条件是,前面步骤中,所产生的对象的类别必须为c#语言的基本类型。比如下句,这里city为string类型。
var q =
.select(c =>
.orderby(c =>c).tolist();
这两个扩展方式都是用在orderby/orderbydescending之后的,第一个thenby/thenbydescending扩展方法作为第二位排序依据,第二个thenby/thenbydescending则作为第三位排序依据,以此类推。
var q =
from o in
where ==1
orderby descending
select o;
语句描述:使用orderby先按发往国家再按运费从高到低的顺序对 employeeid 1 的订单进行排序。
group by/h**ing操作符。
适用场景:分组数据,为我们查找数据缩小范围。
说明:分配并返回对传入参数进行分组操作后的可枚举对象。分组;延迟。
1.简单形式:
var q =
from p in
group p by into g
select g;
语句描述:使用group by按categoryid划分产品。
说明:from p in 表示从表中将产品对象取出来。group p by into g表示对p按categoryid字段归类。
其结果命名为g,一旦重新命名,p的作用域就结束了,所以,最后select时,只能select g。当然,也不必重新命名可以这样写:
var q =
from p in
group p by
我们用示意图表示:
如果想遍历某类别中所有记录,这样:
foreach (var gp in q)
if ( 2)
匿名类:var q =
from p in
group p by into g
select new ;
说明:在这句linq语句中,有2个property:categoryid和g。
这个匿名类,其实质是对返回结果集重新进行了包装。把g的property封装成一个完整的分组。如下图所示:
如果想遍历某匿名类中所有记录,要这么做:
foreach (var gp in q)
if ( 2)
3.最大值。
var q =
from p in
group p by into g
select new ;
语句描述:使用group by和max查找每个categoryid的最高单价。
说明:先按categoryid归类,判断各个分类产品中单价最大的products。取出categoryid值,并把unitprice值赋给maxprice。
4.最小值。
var q =
from p in
group p by into g
select new ;
语句描述:使用group by和min查找每个categoryid的最低单价。
说明:先按categoryid归类,判断各个分类产品中单价最小的products。取出categoryid值,并把unitprice值赋给minprice。
5.平均值。
var q =
from p in
group p by into g
select new ;
语句描述:使用group by和**erage得到每个categoryid的平均单价。
说明:先按categoryid归类,取出categoryid值和各个分类产品中单价的平均值。
6.求和。var q =
from p in
group p by into g
select new ;
语句描述:使用group by和sum得到每个categoryid 的单价总计。
说明:先按categoryid归类,取出categoryid值和各个分类产品中单价的总和。
7.计数。var q =
from p in
group p by into g
select new ;
语句描述:使用group by和count得到每个categoryid中产品的数量。
说明:先按categoryid归类,取出categoryid值和各个分类产品的数量。
8.带条件计数。
var q =
from p in
group p by into g
select new {
ORACLE高级查询
本章目标 多表查询。联接查询 inner join 内联接 left outer join 左外联接 right outer join 右外联接 full join 全联接 子查询。集合操作。union 联合 union all 联合所有 intersect 交集 minus 减集 一 连接类型。o...
SQL高级查询
高级查询概念。在掌握查询的基础知识后,您就可以探知查询解决方案中使用的下列高级查询概念 在选择列表中使用聚合函数。使用 group by 对多行分组。使用 union 组合结果。子查询基础知识。使用 case 处理条件数据。并行查询。汇总数据 在选择列表中使用聚合函数。聚合函数 例如 sum g c...
SQL高级查询
sql server t sql 1 基本常用查询 3 select 3 all 查询所有 3 distinct 过滤重复 3 count 统计 3 top 取前n条记录 3 alias column name 列重命名 3 alias table name 表重命名 3 column 列运算 3 ...