LINQTOSQL高级查询介绍

发布 2021-05-08 19:26:28 阅读 3554

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 ...