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

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

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

 

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

img_405b18b4b6584ae338e0f6ecaf736533.gif 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 中匿名对象查询

img_405b18b4b6584ae338e0f6ecaf736533.gif 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 查询调用本地方法

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

img_405b18b4b6584ae338e0f6ecaf736533.gif 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 求和函数的使用

img_405b18b4b6584ae338e0f6ecaf736533.gif 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 最值函数的使用

img_405b18b4b6584ae338e0f6ecaf736533.gif 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 平均数查询

img_405b18b4b6584ae338e0f6ecaf736533.gif 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          }

 

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

相关文章
实战 rollup 第一节, 入门
rollup 是啥,咋不过多介绍,这里记录一下自己在看rollup文档和相关资料,然后手动来敲一些代码,并且以博客的形式输入,加深自己的理解
实战 rollup 第一节, 入门
|
SQL 数据库
小白入门:什么是CURD?
CRUD是CREATE、READ、UPDATE和DELETE的首字母缩写词,在数据库操作中频繁出现,本文针对小白,如果你已经是开发人员或者对数据库有一定认识的工程师可以默默离开了。让我直接走进CURD的世界。
387 0
小白入门:什么是CURD?
|
Java 数据库连接
JavaWeb课程复习资料(七)——select服务查询所有功能编写
JavaWeb课程复习资料(七)——select服务查询所有功能编写
140 0
JavaWeb课程复习资料(七)——select服务查询所有功能编写
|
数据库
云开发入门教程-多条件查询
云开发入门教程-多条件查询
云开发入门教程-多条件查询
|
SQL 数据库 Python
Python编程:使用pythink查询数据库
Python编程:使用pythink查询数据库
Python编程:使用pythink查询数据库
|
SQL 监控 .NET
ALinq 入门学习(二)--DataContext
1.       ALinq 之DataContext简介 本系列文章使用SQL Server2005 数据库,.NET 3.5 环境。 首先我们建立一个OA_DB数据库,其中建立了三张表,表结构如下图: ORM 映射的主要作用使用对象形式操作数据库,那我们如何使用对象形式去操作以上数据库的三张表呢,那这里讲到的的就是DataContext。
914 0
|
SQL 存储 数据可视化
ALinq 入门学习(八)--ALinq 对Vs2010 的支持
1.       ALinq FOR  VS2010 简介 之前写过一些关于ALinq 的相关文章,详细请参考如下:     ALinq 入门学习(一)--ALinq简介     ALinq 入门学习(二)--DataContext     ALinq 入门学习(三)--Where 条件...
1247 0
|
SQL .NET 数据库
ALinq 入门学习(三)--Where 条件查询
ALinq 中的Where条件查询和 Linq to SQL 中的Where条件查询是一样的操作方式。其作用也就是过滤查询。   1. ALinq 的简单查询 ALinq 的简单查询  1 public void Function() 2         { 3             OA_D...
1077 0
|
SQL .NET 数据库
ALinq 入门学习(五)--插入数据
Linq to SQL 的插入相对于ADO.NEt 来说是少了很多工作。ALinq 的插入和Linq to SQL 也非常相似。这几篇文章可能对于有些人来说是很肤浅的,如果懂Linq to SQL 的同仁来说,这些东西就是积分中的事情,因为这些东西基本一样,只需要注意一些小的细节即可。
898 0
|
数据库
ALinq 入门学习(五)--删除修改数据
1.简单的数据删除 删除数据和Linq to SQL 方式是一样的,都是先从数据库中取出改行数据然后再删除。也就是说对于对象操作室操作删除对象。下面是根据主键删除一行数据代码 ALinq 主键删除一行数据  1 ///  2         /// ALinq 的简单删除数据形式 3     ...
1031 0