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

在SQL查询中对应着各种各样的查询关键字,如果distinct,count,sum 等等一些关键字。在Linq to SQL 中对这些关键字的使用做了封装,同样在ALinq 中也有相同的操作函数。

 

1. ALinq 过滤查询重复数据 Distinct

ALinq 过滤查询重复数据Distinct

 1 /// <summary>
 2         /// ALinq 查询关键字 Distinct
 3         /// </summary>
 4         public void FunctionDistinct()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             var alinq = (from s in context.TabMenu select s.ParentID).Distinct();
 9             foreach (var value in alinq)
10             {
11                 Console.WriteLine(value);
12             }
13             Console.WriteLine("\n");
14         }

 

这段代码,查询过滤了数据库中ParentID 字段,过了数据库集合中所有的重复数据,这个查询相当于SQL 中的关键字Distinct。 该语句对应生成的sql语句格式如下:SELECT DISTINCT [columnname] FROM [table].

 

2.ALinq 中匿名对象查询

ALinq 中匿名对象查询

 1 /// <summary>
 2         /// ALinq 匿名形式查询
 3         /// </summary>
 4         public void FunctionAnonymity()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             var anonymity = from c in context.TabMenu select new { 
 9                 Name=c.MenuName,
10                 Level=c.MenuLevel
11             };
12             foreach (var an in anonymity)
13             {
14                 Console.WriteLine(an.Name+"  ==>  "+an.Level);
15             }
16             Console.WriteLine("\n");
17         }

 

.NET 3.0 出现匿名对象之后,是的.net 平台展现了新的活力。Linq 查询的支持,使之更具特色,然而ALinq也毫不逊色于Linq,它可以查询封装为匿名对象。

 

3.ALinq 查询调用本地方法

ALinq 查询调用本地函数

 1 /// <summary>
 2         /// ALinq 查询调用本地方法
 3         /// </summary>
 4         public void FunctionLocalMethd()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             var anonymity = from c in context.TabMenu
 9                             select new
10                             {
11                                 Name = c.MenuName,
12                                 Level = ConvertType(c.MenuLevel)
13                             };
14             foreach (var an in anonymity)
15             {
16                 Console.WriteLine(an.Name + "  ==>  " + an.Level);
17             }
18             Console.WriteLine("\n");
19         }
20 
21         /// <summary>
22         /// 被调用的本地方法
23         /// </summary>
24         /// <param name="level"></param>
25         /// <returns></returns>
26         public string ConvertType(int level)
27         {
28             if (level == 1)
29             {
30                 return "一级菜单";
31             }
32             if (level == 2)
33             {
34                 return "二级菜单";
35             }
36             else
37             {
38                 return "父级菜单";
39             }
40         }

 

ALinq 除了查询可以封装匿名对象之外,同时还可以查询时调用本地方法。该段代码在查询的时候就调用了本地方法ConvertType(),它将自动信息作了相应的转换。值得注意的地方是,这个调用本地方法,不是在sql语句查询的时候生成的,也就是说不会生成类似sql 中 when case语句。它是在程序结果输出的过程中调用的本地方法。

 

4.ALinq 聚合函数 Count

ALinq 聚合函数Count

 1  /// <summary>
 2         /// ALinq 中查询数据行数
 3         /// </summary>
 4         public void FunctionCount()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             int count = context.TabMenu.Count();
 9             Console.WriteLine("总数据行数:  ==>  "+count);
10             count = context.TabMenu.Count(c=>c.ParentID==2);
11             Console.WriteLine("菜单编号为2的数据行数:  ==>  "+count);
12             long longCount=context.TabMenu.LongCount();
13             Console.WriteLine("长整形数据行数:  ==>  "+longCount);
14             Console.WriteLine("\n");
15         }

 

知道Linq to SQL 中的聚合函数使用方法,也一定知道ALinq中的聚合函数count 的使用。Count 除了查询所有的数据之外,还可以带条件查询,和之前讲过的First 函数的使用方法是一样的。这里有个特殊的地方,就是Count 聚合不仅仅是生成int 类型的,还可以生成long类型。

 

5. ALinq 求和函数的使用

ALinq 求和函数的使用

 1 /// <summary>
 2         /// ALinq 聚合函数的使用
 3         /// </summary>
 4         public void FunctionSum()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             int total=context.TabMenu.Sum(c=>c.ParentID);
 9             Console.WriteLine("总和:  ==>  "+total);
10             total = context.TabMenu.Select(c => c.ParentID).Sum();
11             Console.WriteLine("总和:  ==>  " + total);
12             Console.WriteLine("\n");
13         }

 

求和函数和上面的使用方式基本相同,也就是查询求出某列数据之和,用法也分为两种,可以自身带条件,也可以不带条件。

 

6. ALinq 最值函数的使用

ALinq 最值函数的使用

 1 /// <summary>
 2         /// ALinq 查询最小值
 3         /// </summary>
 4         public void FunctionMin()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             int minResult = context.TabMenu.Min(c => c.Id);
 9             Console.WriteLine("总和:  ==>  " + minResult);
10             minResult = context.TabMenu.Select(c => c.Id).Min();
11             Console.WriteLine("总和:  ==>  " + minResult);
12             Console.WriteLine("\n");
13         }
14 
15         /// <summary>
16         /// ALinq 查询最大值
17         /// </summary>
18         public void FunctionMax()
19         {
20             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
21             context.Log = Console.Out;
22             int minResult = context.TabMenu.Max(c => c.Id);
23             Console.WriteLine("总和:  ==>  " + minResult);
24             minResult = context.TabMenu.Select(c => c.Id).Max();
25             Console.WriteLine("总和:  ==>  " + minResult);
26             Console.WriteLine("\n");
27         }

 

聚合函数其实都是千篇一律,处理的方法都一样,这个就不在多说。

 

7.ALinq 平均数查询

ALinq 平均数查询

 1 /// <summary>
 2         /// ALinq 求平均数
 3         /// </summary>
 4         public void FunctionAverage()
 5         {
 6             OA_DBDataContext context = new OA_DBDataContext(new SqlConnection(connectionString));
 7             context.Log = Console.Out;
 8             double result=context.TabMenu.Average(c=>c.MenuLevel);
 9             Console.WriteLine("平均值:  ==>  "+result);
10             Console.WriteLine("\n");
11         }

 

注意平均数的查询,其实就注意返回值的类型即可。用法和其余的一样 

时间: 2024-09-22 23:38:43

ALinq 入门学习(四)--查询关键字的相关文章

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

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

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

好些天没有写文章了,博客园也发生了很多变化.最近园子里面火药味越来越浓了.有时候看着想过去发表一下自己的观点,仔细想想还是算了,我不想被卷入这个漩涡中.还是老老实实写自己的文章,记录一下自己所学的东西,学习别人的程序的思考方式,分享一下自己的学习经验.不过这里还是希望博客园中的同仁们,共同的维护好这里的学习氛围,彼此共勉,更多的提点而不是指责.   1.ALinq 简单的排序查询 在ALinq中查询数据排序是使用OrderBy关键词,这和Linq to SQL是没有区别的,查询的时候默认的是升序

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简介

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

ALinq 入门学习(二)--DataContext

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

MySQL入门学习(四)

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

MongoDB快速入门笔记(四)之MongoDB查询文档操作实例代码_MongoDB

MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 下面给大家介绍MongoDB查询文档操作的实例 先把student删除,再重新插入数据 > db.student.drop() true > db.student.insert([{ "_id" : 1, "

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

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