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          }

 

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

相关文章
|
10月前
|
人工智能 自然语言处理 API
自学记录HarmonyOS Next的HMS AI API 13:语音合成与语音识别
在完成图像处理项目后,我计划研究HarmonyOS Next API 13中的AI语音技术,包括HMS AI Text-to-Speech和Speech Recognizer。这些API提供了强大的语音合成与识别功能,支持多语言、自定义语速和音调。通过这些API,我将开发一个支持语音输入与输出的“语音助手”原型应用,实现从语音指令解析到语音响应的完整流程。此项目不仅提高了应用的交互性,也为开发者提供了广阔的创新空间。未来,语音技术将在无障碍应用和智慧城市等领域展现巨大潜力。如果你也对语音技术感兴趣,不妨一起探索这个充满无限可能的领域。 (238字符)
393 11
|
开发框架 中间件 数据库
Django 框架入门全攻略:轻松构建 Web 应用
【5月更文挑战第18天】本文是 Django 入门教程,介绍了如何使用 Django 构建 Web 应用。内容包括安装、项目与应用创建、模型定义、数据库迁移、视图编写、路由配置、模板系统、表单处理和中间件的使用。通过实例展示了 Django 基本流程,帮助初学者快速上手。Django 提供高效工具,便于开发者聚焦业务逻辑,轻松构建功能丰富的 Web 应用。
210 5
|
12月前
|
JSON API 数据格式
使用Python和Flask构建简单的RESTful API
【10月更文挑战第12天】使用Python和Flask构建简单的RESTful API
146 1
|
12月前
|
运维 数据处理 Apache
数据实时计算产品对比测评报告:阿里云实时计算Flink版
数据实时计算产品对比测评报告:阿里云实时计算Flink版
|
12月前
|
机器学习/深度学习 自然语言处理 知识图谱
|
人工智能 Cloud Native 调度
阿里云容器服务在AI智算场景的创新与实践
2024年云栖大会,我们总结过往支持AI智算基础底座的实践经验、发现与思考,给出《容器服务在AI智算场景的创新与实践》的演讲。不仅希望将所做所想与客户和社区分享,也期待引出更多云原生AI领域的交流和共建。
|
机器学习/深度学习 人工智能 自然语言处理
【AI 初识】递归神经网络 (RNN) 概念
【5月更文挑战第2天】【AI 初识】递归神经网络 (RNN) 概念
|
SQL 存储 关系型数据库
5 分钟上手 Flink MySQL 连接器实验手册|Flink-Learning 实战营
加入 Flink-Learning 实战营,动手体验真实有趣的实战场景。只需 2 小时,让您变身 Flink 实战派。实战营采取了 Flink 专家在线授课,专属社群答疑,小松鼠助教全程陪伴的学习模式。
2499 2
5 分钟上手 Flink MySQL 连接器实验手册|Flink-Learning 实战营
|
Kubernetes 网络协议 测试技术
Kubernetes上的服务网格 Istio - 分布式追踪篇
2017年5月,Google、IBM和Lyft发布了开源服务网格框架Istio,提供微服务的连接、管理、监控和安全保护。Istio提供了一个服务间通信的基础设施层,解耦了应用逻辑和服务访问中版本管理、安全防护、故障转移、监控遥测等切面的问题。
10154 114