ALinq 入门学习(七)--OrderBy 排序查询

好些天没有写文章了,博客园也发生了很多变化。最近园子里面火药味越来越浓了。有时候看着想过去发表一下自己的观点,仔细想想还是算了,我不想被卷入这个漩涡中。还是老老实实写自己的文章,记录一下自己所学的东西,学习别人的程序的思考方式,分享一下自己的学习经验。不过这里还是希望博客园中的同仁们,共同的维护好这里的学习氛围,彼此共勉,更多的提点而不是指责。

 

1.ALinq 简单的排序查询

在ALinq中查询数据排序是使用OrderBy关键词,这和Linq to SQL是没有区别的,查询的时候默认的是升序排列方式。下面是一个简单的ALinq 查询排序功能例子

ALinq 简单查询排序

1 public void FunctionSimple()
2         {
3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
4             var query = from s in context.TabStudent orderby s.createTime select s;
5             foreach (var stu in query)
6             {
7                 Console.WriteLine("stu.createTime ==>"+stu.createTime.ToString());
8             }
9         }

 

  这个方法使用了Linq 语句对数据库数据进行查询,并且更具createTime字段进行升序排列。

 

2.ALinq 带条件排序查询

对于带条件查询的排序查询页非常简单,只需要加入where条件即可。但是值得注意的是where 和orderby关键字的前后顺序是没有关系的,只要符合业务逻辑,这都是可以执行的。而在sql语句中这是由明确规定的前后关系。

ALinq 带条件排序查询

1  public void FunctionOrderbyCondition()
2         {
3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
4             var query = from s in context.TabStudent where s.Id!=3 orderby s.createTime select s;
5             foreach (var stu in query)
6             {
7                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
8             }
9         }

 

 

3.ALinq 降序查询

ALinq中默认排序时升序排列,使用关键之descending可以进行降序查询。下面是简单的降序查询例子

ALinq 降序查询

1 public void FunctionOrderbyDesc()
2         {
3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
4             var query = from s in context.TabStudent orderby s.createTime descending select s;
5             foreach (var stu in query)
6             {
7                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
8             }
9         }

 

 

4.ALinq 组合排序查询

Sql中不仅仅可以单个字段进行排序查询,还可以同时根据多个字段进行排序查询。ALinq也同样提供了这样的机制。

ALinq 多字段组合排序查询

 1 public void FunctionOrderbyCombination()
 2         {
 3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
 4             var query = from s in context.TabStudent orderby s.createTime,s.classID select s;
 5             foreach (var stu in query)
 6             {
 7                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
 8                 Console.WriteLine("stu.classID ==>" + stu.classID.ToString());
 9             }
10         }

 

这个方法中的查询首先按照createTime字段升序查询,然后再按照classID升序查询。如果比指定排序规则都为默认

 

5.ALinq 组合查询指定排序规则

sql中多个字段查询的时候,可以指定每个字段的排序规则。上面也提到过了,ALinq也可以指定多个字段的排序规则

ALinq 组合查询指定排序规则

 1 public void FunctionOrderByCombinationDesc()
 2         {
 3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
 4             var query = from s in context.TabStudent orderby s.createTime, s.classID descending select s;
 5             foreach (var stu in query)
 6             {
 7                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
 8                 Console.WriteLine("stu.classID ==>" + stu.classID.ToString());
 9             }
10         }

 

 这个方法中的查询首先按照createTime字段升序查询,然后再按照classID降序查询。如果比指定排序规则都为默认

 

6.ALinq 使用Lamda表达式简单查询

Lamda表达式是的代码更加的简洁,程序逻辑更加清楚。ALinq也支持Lamda表达式查询。下面是简单排序查询的Lamda查询例子

ALinq Lamda表达式排序简单查询

1 public void FunctionOrderByLamda()
2         {
3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
4             List<TabStudent> list = context.TabStudent.OrderBy(s => s.createTime).ToList<TabStudent>();
5             foreach (TabStudent stu in list)
6             {
7                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
8             }
9         }

 

这句代码是createTime字段升序查询

 

7.ALinq 使用Lamda表达式降序查询 

Lamda表达式降序查询就要使用到OrderByDescending这个函数,OrderBy函数式默认的升序查询

ALinq Lamda表达式降序查询

1 public void FunctionOrderByLamdaDesc()
2         {
3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
4             List<TabStudent> list = context.TabStudent.OrderByDescending(s => s.createTime).ToList<TabStudent>();
5             foreach (TabStudent stu in list)
6             {
7                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
8             }
9         }

 

 

8.ALinq 中Lamda表达式组合查询

Lamda表达式同时也可以支持多个字段的组合查询,而且还能分别指定查询规则。下面的例子是使用两个不同的字段组合查询,而且两个字段的排序查询方式不同。

ALinq Lamda表达式组合查询

 1 public void FunctionCombinationLamda()
 2         {
 3             DbManagerDataContext context = new DbManagerDataContext(connectionString);
 4             //List<TabStudent> list = context.TabStudent.OrderBy(s => s.createTime).ThenBy(s => s.classID).ToList<TabStudent>();
 5             List<TabStudent> list = context.TabStudent.OrderBy(s => s.createTime).ThenByDescending(s => s.classID).ToList<TabStudent>();
 6             foreach (var stu in list)
 7             {
 8                 Console.WriteLine("stu.createTime ==>" + stu.createTime.ToString());
 9                 Console.WriteLine("stu.classID ==>" + stu.classID.ToString());
10             }
11         }

 

 

 

这里有个问题重新说明一下:虽然Linq语句中查询关键字前后顺序可以调换使用,而且能正常编译运行,但是在某个业务逻辑穿插在其中之后还是有查询条件规则前后的问题。比如之后的这个例子,两个字段组合查询,Orderby 调换位置之后仍然可以编译通过,但是查询的结果就可能不同了。 

时间: 2024-10-25 12:25:12

ALinq 入门学习(七)--OrderBy 排序查询的相关文章

ALinq 入门学习(六)--Join 连接查询

简单介绍一下连接查询:通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志.from join_table1 join_type join_table2 on Join_condition  这个是SQL 中最简单的连接查询功能语法.在ALinq , Linq ,Entity Framework 中都有涉及到连接查询,在某种程度上的确简便了很多查询.但是个人认为,Linq to SQL ,ALinq 使用Linq 语句来连接查询数据库不是

ALinq 入门学习(三)--Where 条件查询

ALinq 中的Where条件查询和 Linq to SQL 中的Where条件查询是一样的操作方式.其作用也就是过滤查询.   1. ALinq 的简单查询 ALinq 的简单查询  1 public void Function() 2         { 3             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString)); 4             contex

ALinq 入门学习(八)--ALinq 对Vs2010 的支持

1.       ALinq FOR  VS2010 简介 之前写过一些关于ALinq 的相关文章,详细请参考如下:     ALinq入门学习(一)--ALinq简介     ALinq入门学习(二)--DataContext     ALinq入门学习(三)--Where条件查询     ALinq入门学习(四)--查询关键字     ALinq入门学习(五)--插入数据     ALinq入门学习(五)--删除修改数据     ALinq入门学习(六)--Join连接查询     ALin

ALinq 入门学习(四)--查询关键字

在SQL查询中对应着各种各样的查询关键字,如果distinct,count,sum 等等一些关键字.在Linq to SQL 中对这些关键字的使用做了封装,同样在ALinq 中也有相同的操作函数.   1. ALinq 过滤查询重复数据 Distinct ALinq 过滤查询重复数据Distinct  1 /// <summary> 2         /// ALinq 查询关键字 Distinct 3         /// </summary> 4         publi

ALinq 入门学习(二)--DataContext

 1.       ALinq 之DataContext简介 本系列文章使用SQL Server2005 数据库,.NET 3.5 环境. 首先我们建立一个OA_DB数据库,其中建立了三张表,表结构如下图: ORM 映射的主要作用使用对象形式操作数据库,那我们如何使用对象形式去操作以上数据库的三张表呢,那这里讲到的的就是DataContext.DataContext 的作用很明确,就和Linq to SQL 中的DataContext 的作用一样: 把查询句法翻译成SQL语句,以及把数据从数据库

ALinq 入门学习(一)--ALinq简介

不写文章有几日了,这些天都浪迹于java程序中,潜心修炼java中的Spring框架,感触良多.不过我还是不打算写java相关的文章,因为java我还是菜鸟.前些天写过关于自己的一个ORM框架(点击阅读),希望看过的同仁们有些收获.做程序我喜欢开源,虽然上次老赵"鄙视"过我们,不是其他的原因,开源达到了资源共享的目的..NET 中出的ORM框架也不少了,Hibernate的克隆版NHibernate,还有Linq to SQL ,Entity FrameWork ,ALinq.接下我要

MySQL入门学习(四)

mysql MySQL入门学习(四) --学习篇   上篇我们学会了如何创建一个数据库和数据库表,并知道如何向数据库表中添加记录.   那么我们如何从数据库表中检索数据呢? 1.从数据库表中检索信息 实际上,前面我们已经用到了SELECT语句,它用来从数据库表中检索信息. select语句格式一般为: SELECT 检索关键词 FROM 被检索的表 WHERE 检索条件(可选) 以前所使用的" * "表示选择所有的列. 下面继续使用我们在上篇文章中创建的表mytable: 2.查询所有

android-Android开发入门学习中遇到的问题

问题描述 Android开发入门学习中遇到的问题 Android初学者,使用的书籍是<第一行代码Android>在书中2.2.5在活动中使用Toast这个部分出现了问题代码编写并未报错,虚拟机中按menu键没有出现菜单栏,请问这是什么原因该如何解决.拜托各位了. 问题没有解决,在虚拟机中点击Menu依旧没有出现菜单栏,请问还有哪些问题?拜托了 解决方案 在学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决.现在将我在学习Android开发过程中遇到的一些问题及

MySQL入门学习(五)

mysql MySQL入门学习(五) --多表操作   前面我们熟悉了数据库和数据库表的基本操作,现在我们再来看看如何操作多个表.   在一个数据库中,可能存在多个表,这些表都是相互关联的.我们继续使用前面的例子.前面建立的表中包含了员工的一些基本信息,如姓名.性别.出生日期.出生地.我们再创建一个表,该表用于描述员工所发表的文章,内容包括作者姓名.文章标题.发表日期. 1.查看第一个表mytable的内容: mysql> select * from mytable; +----------+-