第十四节:Lambda、linq、SQL的相爱相杀(3)

一. SQL 开篇

1. where用法

1      #region 封装EF调用SQL语句查询
2         public static List<T> ExecuteQuery<T>(string sql, params SqlParameter[] pars)
3         {
4             return db.Database.SqlQuery<T>(sql, pars).ToList();
5         }
6         #endregion

复制代码

 1        #region 01-where用法2             {3                 //1. where用法4                 //1.1 查询账号为admin的用户信息5                 Console.WriteLine("---------------------------- 1. where用法   ----------------------------------------");6                 Console.WriteLine("---------------------------- 1.1 查询账号为admin的用户信息   ----------------------------------------");7                 string sql1 = @"select * from Sys_UserInfor where userAccount = 'admin'";8                 List<Sys_UserInfor> sUserList1 = ExecuteQuery<Sys_UserInfor>(sql1);9                 foreach (var item in sUserList1)
10                 {
11                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3}", item.userName, item.userAccount, item.userAge, item.userSex);
12                 }
13                 //1.2  查询账号为中包含admin且性别为男的用户信息
14                 Console.WriteLine("---------------------------- 1.2  查询账号为中包含admin且性别为男的用户信息   ----------------------------------------");
15                 string sql2 = @"select * from Sys_UserInfor where userAccount like '%admin%' and userSex='男'";
16                 List<Sys_UserInfor> sUserList2 = ExecuteQuery<Sys_UserInfor>(sql2);
17                 foreach (var item in sUserList2)
18                 {
19                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3}", item.userName, item.userAccount, item.userAge, item.userSex);
20                 }
21             }
22             #endregion

复制代码

2. select用法

复制代码

 1   #region 02-select用法2             {3                 //2. select用法 (SQL语句中,查询部分字段,必须要有个实体接收,不能用var类型接收)4                 //2.1 查询账号中包含 admin 的用户的 姓名、年龄和性别 三条信息5                 Console.WriteLine("---------------------------- 2. select用法   ----------------------------------------");6                 Console.WriteLine("-------------2.1 查询账号中包含 admin 的用户的 姓名、年龄和性别 三条信息 )-------------------------");7                 string sql1 = @"select userName,userAge,userSex from Sys_UserInfor where userAccount like '%admin%'";8                 List<model1> sUserList1 = ExecuteQuery<model1>(sql1);9                 sUserList1.ForEach(u =>
10                 {
11                     Console.WriteLine("用户名:{0},用户年龄:{1},用户性别:{2}", u.userName, u.userAge, u.userSex);
12                 });
13 
14             }
15             #endregion

复制代码

 

3. order by用法

复制代码

 1   #region 03-order by用法2             {3                 //区分:在Lambda中有 orderby(OrderByDescending、ThenBy、ThenByDescending),但在SQL中 只有order by  asc(默认是升序) 和order by desc4                 //需要按照多个条件进行升序或降序,格式为: order by x1, x2 descending,x3(表示先按照x1升序排,x1相同的话,再按照x2降序排,x2相同的话,在按照x3升序排列)5                 //3. Order By用法 (单条件升降序、多条件综合排序)6                 //3.1 查询delflag 为1 的所有用户信息,按照时间升序排列7                 Console.WriteLine("------3. orderby用法  (单条件升降序、多条件综合排序)-------------");8                 Console.WriteLine("--------------------- 3.1 查询delflag 为1 的所有用户信息,按照时间升序排列   ------------------------------");9 
10                 string sql1 = @"select * from Sys_UserInfor where delFlag =1 order by addTime";
11                 List<Sys_UserInfor> sUserList1 = ExecuteQuery<Sys_UserInfor>(sql1);
12                 foreach (var item in sUserList1)
13                 {
14                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3},创建时间:{4}", item.userName, item.userAccount, item.userAge, item.userSex, item.addTime);
15                 }
16                 //3.2 查询delflag 为1 的所有用户信息,先按照时间升序排列,再按照年龄降序
17                 Console.WriteLine("---------------3.2 查询delflag 为1 的所有用户信息,先按照时间升序排列,再按照年龄降序----------------------");
18                 string sql2 = @"select * from Sys_UserInfor where delFlag =1 order by addTime,userAge desc";
19                 List<Sys_UserInfor> sUserList2 = ExecuteQuery<Sys_UserInfor>(sql2);
20                 foreach (var item in sUserList2)
21                 {
22                     Console.WriteLine("用户名:{0},用户账号:{1},用户年龄:{2},用户性别:{3},创建时间:{4}", item.userName, item.userAccount, item.userAge, item.userSex, item.addTime);
23                 }
24             }
25             #endregion

复制代码

 

4. 多表关联查询

  这里SQL语句里的查询,查询包括内连接和外连接,其中,

  内连接分为:隐式内连接和显示内连接。特点:查询出来的结果是多表交叉共有的。

  外连接分为:左外连接和右外连接.

  左外连接:查询出JOIN左边表的全部数据,JOIN右边的表不匹配的数据用NULL来填充。

  右外连接:查询出JOIN右边表的全部数据,JOIN左边的表不匹配的数据用NULL来填充。

复制代码

 #region 04-多表关联查询{//4.查询账号中含有admin的所有用户的用户昵称、账号、和登录信息//4.1 隐式内连接的写法Console.WriteLine("---------------04-多表关联查询--------------------");Console.WriteLine("---------------4.1 隐式内连接的写法--------------------");string sql1 = @"select a.userName,a.userAccount,b.loginCity,b.loginIp,b.loginTimefrom Sys_UserInfor a,LoginRecords bwhere a.id =b.userId and a.userAccount like '%admin%'";List<model2> uList1 = ExecuteQuery<model2>(sql1);foreach (var item in uList1){Console.WriteLine("姓名:{0},账号:{1},登录城市:{2},登录IP:{3},登录时间:{4}", item.userName, item.userAccount, item.loginCity, item.loginIp, item.loginTime);}//4.2 隐式外链接Console.WriteLine("---------------4.2 隐式外链接 --------------------");string sql2 = @"select a.userName,a.userAccount,b.loginCity,b.loginIp,b.loginTimefrom Sys_UserInfor  a join LoginRecords b on  a.id =b.userIdwhere a.userAccount like '%admin%'";List<model2> uList2 = ExecuteQuery<model2>(sql2);foreach (var item in uList2){Console.WriteLine("姓名:{0},账号:{1},登录城市:{2},登录IP:{3},登录时间:{4}", item.userName, item.userAccount, item.loginCity, item.loginIp, item.loginTime);}//4.3 查询所有用户的登录信息(左外连接的方式)Console.WriteLine("-----------------------4.3 查询所有用户的登录信息(外连接的方式)----------------------------");string sql3 = @"select a.userName,a.userAccount,b.loginCity,b.loginIp,b.loginTimefrom Sys_UserInfor a left join LoginRecords b on  a.id =b.userId";List<model2> uList3 = ExecuteQuery<model2>(sql3);foreach (var item in uList3){Console.WriteLine("姓名:{0},账号:{1},登录城市:{2},登录IP:{3},登录时间:{4}", item.userName, item.userAccount, item.loginCity, item.loginIp, item.loginTime);}}#endregion

复制代码

 

5. group By用法

  group By分组(SQL中的group by分组和linq、lambda完全不同。特别注意:select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中) 常见的聚合函数有:sum avg min max

复制代码

 1   #region 05-group By分组2             {3                 //5. Group By分组(SQL中的group by分组和linq、lambda完全不同,4                 /*特别注意:select指定的字段要么就要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中)5                  常见的聚合函数有:sum avg min max6                  */7 8                 //5.1 根据用户的性别进行分类,并且统计不同性别的年龄总和9                 Console.WriteLine("-------------------- 5. GroupBy分组------------------------");
10                 Console.WriteLine("-------------------- 5.1 根据用户的性别进行分类,并且统计不同性别的年龄总和------------------------");
11                 string sql1 = @"select userSex,SUM(userAge) as TotalAges
12                                 from Sys_UserInfor
13                                 group by userSex";
14                 List<model3> sUserListGroup1 = ExecuteQuery<model3>(sql1);
15                 foreach (var item in sUserListGroup1)
16                 {
17                       Console.WriteLine("性别:{0},年龄总和:{1}", item.userSex, item.TotalAges);
18                 }
19                  
20                 //5.2 根据用户性别进行分类,并且统计不同性别年龄的最大值
21                 Console.WriteLine("-------------5.2 根据用户性别进行分类,并且统计不同性别年龄的最大值-------------------");
22                 string sql2 = @"select userSex,MAX(userAge) as TotalAges
23                                 from Sys_UserInfor
24                                 group by userSex";
25                 List<model3> sUserListGroup2 = ExecuteQuery<model3>(sql2);
26                 foreach (var item in sUserListGroup2)
27                 {
28                     Console.WriteLine("性别:{0},年龄最大值:{1}", item.userSex, item.TotalAges);
29                 }
30             }
31             #endregion

复制代码

 

6. 分页用法

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hive mysql windows_Java-从MySQL到Hive导入,其中MySQL在Windows上运行,而Hive在Cent OS上运行(Horton Sandbox)...

在任何答案和评论之前.我尝试了在Stackoverflow中找到的几个选项,但均以失败告终.以下是这些链接-我通过命令行在Horton Sandbox中进行了尝试并成功.sqoop import --connect jdbc:mysql://192.168.56.101:3316/database_name --usernameuser --passwordpwd --table table_name …

第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)

一. 基本介绍 回忆&#xff1a; 最早接触到表达式目录树(Expression)可能要追溯到几年前使用EF早期的时候&#xff0c;发现where方法里的参数是Expression<Func<T,bool>>这么一个类型&#xff0c;当初不是很理解&#xff0c;只是知道传入lambda表达式使用即可&…

Php7 mongodb explain,【代码片-1】 php7 mongoDB 简单封装

/*** mongoDB 简单 封装* 注意&#xff1a;支持 mongoDB 3.2** author color_wind*/finalclassm_mgdb {privatestatic$ins [];privatestatic$def"default";private$_conn null;private$_db null;privatestatic$_config ["default"> ["url">…

IIS Web 服务器/ASP.NET 运行原理基本知识概念整理

前言&#xff1a; 记录 IIS 相关的笔记还是从公司笔试考核题开始的&#xff0c;问 Application Pool 与 AppDomain 的区别&#xff1f; 促使我对进程池进了知识的学习&#xff0c;所以记录一下学习的笔记。 我们知道现在 .NET 就业来看&#xff0c;80% 的 .NET 程序员都是从事 …

java正则表达式 ascii,是否可以检查字符串是否在Java中仅包含ASCII?

使用正则表达式您可以使用以下正则表达式查找特定的String值是否包含ASCII字符-\\A\\p{ASCII}*\\zString类的matches()方法接受正则表达式&#xff0c;并验证当前字符串是否与给定表达式匹配(如果匹配)&#xff0c;则返回true&#xff0c;否则返回false。因此&#xff0c;通过将…

Http请求处理流程

从一个页面比如www.xuxiaoyu.net的请求开始如何就能打开blogs页面的呢&#xff1f;这其中发生了什么样的东西&#xff1f; Http请求(Http Request) 当服务器&#xff08;IIS&#xff09;接受到一个Http请求的时候进行以下步骤的处理&#xff1a; 1)服务器获取所请求的页面的后缀…

matlab 基金业绩归因,基金专题报告:基于净值和持仓的基金业绩归因方法研究...

核心观点&#xff1a;当前主流的基金业绩归因方法主要有两个方向&#xff1a;一是基于净值数据的时间序列回归方法&#xff0c;所需数据较少且操作简单&#xff0c;主要通过基金历史收益率与风险溢价因子收益率进行回归来分析&#xff0c;二是基于持仓数据的归因方法&#xff0…

iis到w3wp的数据流及工作原理

HTTP.sys->IO线程-CLR线程池中的worker线程处理 IO线程只负责把请求交给Worker线程或者放入进程池级别的队列,然后又去HTTP.SYS的队列中处理其它的请求

php跨域session共享,PHP中利用COOKIE与SESSION联合实现SESSION跨域

大家都知道在一般情况下,一个网站只有一个域名,www.demo.com,但是也有些网站架构是由多个子域名组建的.所以就需要SESSION可以跨子域被 访问到,这样才可以实现用户的跨域登录.就是说客户在A下登录的,同样B也同时登录了,不需要用户再次登录,同时也实现了参数的跨域传递.当然不可…

关于w3wp.exe

一. IIS各版本间的区别 IIS 5.0 IIS 5.1 IIS 6.0 平台 Windows 2000 Windows XP Professional Windows Server 2003 家族 体系结构 32 位 32 位和 64 位 32 位和 64 位 应用程序进程模型 TCP/IP 内核 DLLhost.exe&#xff08;处于中等或高应用程序隔离模式下的多个…

php云解析播放器,xyplay云解析PHPV3.4.1优化稳定版视频解析

演示地址&#xff1a;如有演示站请以演示为准&#xff0c;无演示站以截图为准,源码太多服务器有限&#xff0c;无法搭建所有源码演示站&#xff0c;请谅解&#xff01;新手购买指导&#xff1a;1.在本站注册账号 丨 2.登录已注册账号充值源码所需金币 丨 3.登录账号下载所需源码…

php version.,PHP_VERSION指什么

PHP_VERSION (string)当前的PHP版本&#xff0c;以字符串形式“ major.minor.release [extra]”表示。 (推荐学习&#xff1a;PHP视频教程)例如&#xff1a;<?php // PHP_VERSION_ID 自 PHP 5.2.7 起有效&#xff0c;// 如果我们的版本低于该版本&#xff0c;则用以下代码来…

C# async 和 await 理解

先假设如下场景&#xff1a; 主函数 Main&#xff0c;循环等待用户输入&#xff1b; 计算函数 Cal&#xff0c;耗时计算大量数据&#xff1b; class Test {static int Main(string[] args){while(true){// 等待用户输入}}public static int Cal() {int sum 0;for (int i …

php进阶面向对象及tp5,TP5实战技巧---开发思路 引路造桥

## TP5实战技巧实例---开发思路> 子曰&#xff1a;“学而不思则罔&#xff0c;思而不学则殆。”[TOC]### 利用TP的MVC框架 做快速开发>[success] 写在前面的话:既然选择TP5框架,我推荐大家要通读完全开发手册,我这里并不是要大家记住每一个方法,每一个细节.而是要求大家心…

C# 彻底搞懂async/await

前言 Talk is cheap, Show you the code first&#xff01; private void button1_Click(object sender, EventArgs e) {Console.WriteLine("111 balabala. My Thread ID is :" Thread.CurrentThread.ManagedThreadId);AsyncMethod();Console.WriteLine("222 …

matlab平滑窗滤波,matlab实现平滑滤波

clc;clear;close all;imimread(‘p1.jpg‘);im rgb2gray(im);imdouble(im);imim/max(im(??);figure(‘Name‘,‘原图‘,‘NumberTitle‘,‘off‘);imshow(im,[0,1]);P1 imnoise(im,‘gaussian‘,0,0.005); % adding gaussian noise 这里im是原始图像&#xff0c;添加了均值…

c#之task与thread区别及其使用

1.什么是thread 当我们提及多线程的时候会想到thread和threadpool&#xff0c;这都是异步操作&#xff0c;threadpool其实就是thread的集合&#xff0c;具有很多优势&#xff0c;不过在任务多的时候全局队列会存在竞争而消耗资源。thread默认为前台线程&#xff0c;主程序必须等…

java内存分配和垃圾回收,Java内存分配与垃圾回收

1.JVM管理的内存包含下图所示的几个运行时数据区域&#xff0c;其中方法区和堆为线程共享的数据区域&#xff0c;程序计数器&#xff0c;虚拟机栈以及本地方法栈为线程私有的数据区域。程序计数器&#xff1a;可以看做是当前线程所执行的字节码的行号指示器&#xff0c;告诉字节…

谈谈你对闭包的理解?

闭包这个概念好难理解&#xff0c;身边朋友们好多都稀里糊涂的&#xff0c;稀里糊涂的林老冷希望写下这篇文章能够对稀里糊涂的伙伴们有一些帮助~ 请大家跟我理解一下&#xff0c;如果在一个函数的内部定义了另一个函数&#xff0c;外部的我们叫他外函数&#xff0c;内部的我们…

php有哪些开源社区,PHP开源社区

简介Blade 是 Laravel 提供的一个简单而又强大的模板引擎。和其他流行的 PHP 模板引擎不同&#xff0c;Blade 并不限制你在视图中使用原生 PHP 代码。所有 Blade 视图文件都将被编译成原生的 PHP 代码并缓存起来&#xff0c;除非它被修改&#xff0c;否则不会重新编译&#xff…