当前位置: 首页 > news >正文

【查询基础】.NET开源 ORM 框架 SqlSugar 系列

 .NET开源 ORM 框架 SqlSugar 系列

  1. 【开篇】.NET开源 ORM 框架 SqlSugar 系列
  2. 【入门必看】.NET开源 ORM 框架 SqlSugar 系列
  3. 【实体配置】.NET开源 ORM 框架 SqlSugar 系列
  4. 【Db First】.NET开源 ORM 框架 SqlSugar 系列
  5. 【Code First】.NET开源 ORM 框架 SqlSugar 系列
  6. 【数据事务】.NET开源 ORM 框架 SqlSugar 系列
  7. 【连接池】.NET开源 ORM 框架 SqlSugar 系列
  8. 【查询目录】.NET开源 ORM 框架 SqlSugar 系列
  9. 【查询基础】.NET开源 ORM 框架 SqlSugar 系列

💦万丈高楼平地起,做开发想要技术精进,必须要有扎实的基础功底。基础SQL查询语法一定要牢记于心,才能应对后面更为复杂的形势。

01. 查所有字段

List<Student> list=db.Queryable<Student>().ToList()
//select * from Student

02. 查询总数

int count=db.Queryable<Student>().Count()
//select count(1) from Student

03. 按条件查询

db.Queryable<Student>().Where(it=>it.Id==1).ToList()
//select * from Student where id=1db.Queryable<Student>().Where(it=>it.name !=null).ToList()//不是null
//select * from Student where name is not nulldb.Queryable<Student>().Where(it=>it.name ==null).ToList()//是null
//select * from Student where name is nulldb.Queryable<Student>().Where(it=>it.name !="").ToList()//不是空 ,不为空
//select * from Student where name <> ''

04. 多条件查询

db.Queryable<Student>().Where(it=>it.Id>10&&it.Name=="a").ToList()
//select * from Student where id>10 and name='a'
db.Queryable<Student>().Where(it=>it.Id>10).Where(it=>it.Name=="a").ToList()
//select * from Student where id>10 and name='a'
//如果是或者关系可以用 ||

05. 动态OR查询

var exp= Expressionable.Create<Student>();
exp.OrIF(条件,it=>it.Id==1);//.OrIf 是条件成立才会拼接OR
exp.Or(it =>it.Name.Contains("jack"));//拼接OR
var list=db.Queryable<Student>().Where(exp.ToExpression()).ToList();

06. 模糊查询

db.Queryable<Student>().Where(it =>it.Name.Contains("jack")).ToList();
//select  * from  Student where name like %jack%

07. 根据主键查询

/*单主键查询*/
db.Queryable<Student>().InSingle(2) //通过主键查询 SingleById
db.Queryable<Student>().Single(it=>it.Id==2) //根据ID查询
//select * from Student where id=2/*多主键查询*/
var getAll=db.Queryable<Order>().WhereClassByPrimaryKey(new Order(){Pk1=1,Pk2=xx}).ToList(); //单个实体  
vargetAll=db.Queryable<Order>().WhereClassByPrimaryKey(List<Order>).ToList(); //支持集合

08. 查询第一条 ,第一行

.First() 等同于C#中的 FirstOrDefault , 没有值返回 null


db.Queryable<Student>().First(it=>it.Id==1) //没有返回Null
//select top 1 * from Student where id=1

09. 查询最后一条

First() 等同于C#中的 FirstOrDefault , 没有值返回 null

db.Queryable<Student>()
.OrderBy(it=>it.Id,OrderByType.Desc )// 倒序
.First(it=>it.Id>10) //没有返回Null
//select top 1 * from Student order by id desc where id>10

10. 查前几条


db.Queryable<Student>().Take(10).ToList()
//select top 10 * from Student

11. 数据行数

db.Queryable<Student>().Where(it=>it.Id>11).Count()//同步
db.Queryable<Student>().Where(it=>it.Id>11).CountAsync()//异步
//select count(*) from Student where id>11
//你也可以用函数
SqlFunc.AggregateCount

12. 设置新表名

//例1:更新表名
db.Queryable<School>().AS("Student").ToList();
//生成的SQL  SELECT [ID],[NAME] FROM  Student
//动态表名 表别名 指定表明//例2:给表名添加前缀
db.Queryable<School>().AS("dbo.School").ToList();
//生成的SQL  SELECT [ID],[NAME] FROM  dbo.School//如果不用AS也可以在特性中设置别名,看文档:实体本置

13. 是否存在记录

is exists

db.Queryable<Student>().Where(it=>it.Id>11).Any()
db.Queryable<Student>().Any(it=>it.Id>11) //上面语法的简化
//异步就是 AnyAsync()

14. In查询(单个字段)

单个字段

int [] allIds =new int[]{2,3,31};
db.Queryable<OrderItem>().Where(it => allIds.Contains(it.OrderId)).ToList()
//orderid in (2,3,31)
//支持超过 1000以上,只要数据库不慢没有上限//字符串类型 varchar和nvarchar (默认varchar来保证性能)NameList.Contains(it.Name,true) //true和false来控制是varchar还是nvarchar

15. In查询(多个字段)

多个字段 (升级:5.1.4.67-preview04)

List<OrderItem> list=xxx;db.Queryable<OrderItem>().Where(it => list.Any(s => s.Id == it.Id && s.Name == it.Name))//也可以用动态表达式拼OR实现

16. In模糊查询

对象集合In like 升级:5.1.4.67

 List<OrderItem> list=xxx;db.Queryable<OrderItem>().Where(it => list.Any(s => it.Name.Contanins(s.Name)))//也可以用动态表达式拼OR实现

数组集全 in like :5.1.4.85

 List<string> list=xxx;db.Queryable<OrderItem>().Where(it => list.Any(s => it.Name.Contanins(s)))//也可以用动态表达式拼OR实现

17. Not In

int [] allIds =new int[]{2,3,31};
db.Queryable<OrderItem>().Where(it => !allIds.Contains(it.OrderId)).ToList()
//orderid  NOT in (2,3,31)

18. 简单排序

db.Queryable<Student>().OrderBy((st,sc)=>sc.Id,OrderByType.Desc).ToList()
//排序 可以多个
//更多用法
https://www.donet5.com/Home/Doc?typeId=2312

19. 查询单条

查询一条

db.Queryable<Student>().Single(it=>it.Id==1) //没有返回Null,如果结果大于1条会抛出错误
//select * from Student where id=1 // 查询id等于1的单条记录

20. 获取最大值

db.Queryable<Order>().Max(it=>it.Id);//同步 
db.Queryable<Order>().MaxAsync(it=>it.Id);//异步
//也可以用函数 SqlFunc.AggregateMax

21. 获取最小值

db.Queryable<Order>().Min(it=>it.Id);//同步
db.Queryable<Order>().MinAsync(it=>it.Id);//异步
//也可以用函数 SqlFunc.AggregateMin

22. 求和

db.Queryable<Order>().Sum(it=>it.Id);//同步
db.Queryable<Order>().SumAsync(it=>it.Id);//异步
//也可以用函数 SqlFunc.AggregateSum

23. 平均值

db.Queryable<Order>().Avg(it=>it.Id);//同步
db.Queryable<Order>().AvgAsync(it=>it.Id);//异步
//也可以用函数 SqlFunc.AggregateAvg

24. 查询过滤排除某一个字段

生成的sql Select 不会有Files

/***单表***/
db.Queryable<Order>().IgnoreColumns(it=>it.Files).ToList();//只支持单表查询/***联查***/
//是主表
var leftQuery=db.Queryable<Order>().IgnoreColumns(it=>it.Files);
var list=db.Queryable(leftQuery).LeftJoin<OrderDetails>((o,d)=>o.id==d.orderid).Select(o=>o).ToList();    //是Join的表
var rightQuery= db.Queryable<OrderItem>().IgnoreColumns(it=>it.Files);
var list=db.Queryable<Order>().LeftJoin(rightQuery,(o,d)=>o.Id == d.OrderId).Select(o=>o).ToList();

相关文章:

【查询基础】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

git push使用

推送指定分支 将当前分支推送远程 git push origin HEAD:<branch-name> 这里的 HEAD 是一个特殊的指针&#xff0c;它指向当前分支的最新提交。这条命令会将当前分支的更改推送到远程的 master 分支。 示例 git push origin HEAD:main 当前分支是test&#xff0c;远…...

【iOS】多线程基础

【iOS】多线程基础 文章目录 【iOS】多线程基础前言进程与线程进程进程的状态进程的一个控制结构进程的上下文切换 线程为什么要用线程什么是线程线程和进程的关系线程的上下文切换 线程和进程的优缺点 小结 前言 笔者由于对于GCD不是很了解&#xff0c;导致了项目中网络请求哪…...

常用网站网址

目录 1.docker hub2.csdn 1.docker hub https://image.cgdcgd.cc/ 2.csdn https://www.csdn.net/ ​...

go语言切片

切片 切片是一种数据结构&#xff0c;这种数据结构便于使用和管理数据集合。切片是围绕动态数组的概念构建的&#xff0c;可以按需自动增长和缩小。切片的动态增长是通过内置函数 append 来实现的。这个函数可以快速且高效地增长切片。还可以通过对切片再次切片来缩小一个切片的…...

鸿蒙NEXT元服务:利用App Linking实现无缝跳转与二维码拉起

【效果】 元服务链接格式&#xff08;API>12适用&#xff09;&#xff1a;https://hoas.drcn.agconnect.link/ggMRM 【参考网址】 使用App Linking实现元服务跳转&#xff1a;文档中心 草料二维码&#xff1a;草料二维码生成器 【引言】 本文将详细介绍如何使用App Lin…...

网络药理学之薛定谔Schrödinge Maestro:6、分子对接(Glide、Ligand docking)和可视化

本人是win11&#xff0c;薛定谔版本是12.9。 官网&#xff1a;https://www.schrodinger.com/ 本篇文章的示例大分子蛋白PDB ID为4KNN&#xff0c;小分子配体的MOL ID为MOL004004。 本文部分图源来自知乎https://zhuanlan.zhihu.com/p/416698194&#xff0c;推荐为原作者贡献阅读…...

已解决ModuleNotFoundError: No module named ‘selenium‘

1. 错误提示 ModuleNotFoundError: No module named selenium&#xff0c;这意味着你试图导入一个名为 selenium 的模块&#xff0c;但Python找不到这个模块 2. 解决方案 安装缺失的模块: 如果你确定模块名称正确但仍然收到这个错误&#xff0c;那么可能是你没有安装这个模块…...

【Maven】依赖冲突如何解决?

准备工作 1、创建一个空工程 maven_dependency_conflict_demo&#xff0c;在 maven_dependency_conflict_demo 创建不同的 Maven 工程模块&#xff0c;用于演示本文的一些点。 什么是依赖冲突&#xff1f; 当引入同一个依赖的多个不同版本时&#xff0c;就会发生依赖冲突。…...

什么是EMS

EMS是能量管理系统&#xff08;Energy Management System&#xff09;的缩写&#xff0c;是一种集成的技术解决方案&#xff0c;旨在帮助企业和组织更有效地管理和优化其能源使用。EMS通过收集、分析和报告能源数据来识别节能机会&#xff0c;并提供工具以实施改进措施。 主要…...

26页PDF | 数据中台能力框架及评估体系解读(限免下载)

一、前言 这份报告详细解读了数据中台的发展历程、核心概念、能力框架及成熟度评估体系。它从阿里巴巴的“大中台&#xff0c;小前台”战略出发&#xff0c;探讨了数据中台如何通过整合企业内部的数据资源和能力&#xff0c;加速业务迭代、降低成本&#xff0c;并推动业务增长…...

【Vue3】【Naive UI】< a >标签

【Vue3】【Naive UI】< a >标签 超链接及相关属性其他属性 【VUE3】【Naive UI】&#xff1c;NCard&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;n-button&#xff1e; 标签 【VUE3】【Naive UI】&#xff1c;a&#xff1e; 标签 <a> 标签HTML中的一个锚&…...

分页查询日期格式不对

方式一:在属性上加入注解&#xff0c;对日期进行格式化 方式二:在 WebMvcConfiguration 中扩展Spring MVC的消息转换器&#xff0c;统一对日期类型进行格式化处理 /*** 统一转换处理扩展spring mvc* 后端返回前端的进行统一转化处理* param converters*/Overrideprotected voi…...

DAY140权限提升-Linux系统权限提升篇VulnhubPATH变量NFS服务Cron任务配合SUID

一、演示案例-Linux系统提权-Web&普通用户-SUID-NFS安全 NFS是一种基于TCP/IP 传输的网络文件系统协议&#xff0c;通过使用NFS协议&#xff0c;客户机可以像访问本地目录一样访问远程服务器中的共享资源。 https://www.virtualbox.org/wiki/Downloads https://www.vuln…...

HTTPS 的应用数据是如何保证完整性的?

在 HTTPS 中&#xff0c;确保 应用数据的完整性 是通过以下几个关键机制来实现的&#xff1a; 消息认证码&#xff08;MAC&#xff09;&#xff1a;用于确保数据在传输过程中未被篡改。加密&#xff1a;通过加密数据防止数据被窃取&#xff0c;并与 MAC 配合使用&#xff0c;确…...

Unity ShaderLab 实现3D物体描边

实现思路&#xff1a; 给物体添加第二个材质球&#xff0c;在shader的顶点着色器中使顶点的位置变大&#xff0c;然后在片元着色器中输出描边颜色。 shader Graph实现如下&#xff1a; ShaderLab实现如下&#xff1a; Shader "Custom/Outline" {Properties{[HDR]_…...

SQL进阶——C++与SQL进阶实践

在C开发中&#xff0c;SQL数据库的操作是开发者常见的任务之一。虽然前面我们已经介绍了如何在C中通过数据库连接执行基本的SQL查询&#xff0c;但在实际项目中&#xff0c;我们通常需要更加复杂和高效的数据库操作。存储过程与函数的调用、复杂SQL查询的编写、以及动态构造SQL…...

AIGC--------AIGC在医疗健康领域的潜力

AIGC在医疗健康领域的潜力 引言 AIGC&#xff08;Artificial Intelligence Generated Content&#xff0c;人工智能生成内容&#xff09;是一种通过深度学习和自然语言处理&#xff08;NLP&#xff09;等技术生成内容的方式。近年来&#xff0c;AIGC在医疗健康领域展现出了极…...

node.js中实现MySQL的增量备份

有时候&#xff0c;我们需要对生产库进行备份&#xff0c;不要求实时性很高&#xff0c;大概每天一次就行&#xff0c;为性能考虑&#xff0c;只备份最新更改内容&#xff0c;即增量备份即可&#xff0c;这种场景下对DB的设计和备份语句有所要求。 首先要求按源表各字段定义目标…...

Java线程池提交任务流程底层源码与源码解析

前言 嘿&#xff0c;各位技术爱好者们&#xff0c;今天咱们来聊聊Java线程池提交任务的底层源码与源码解析。作为一个资深的Java开发者&#xff0c;我相信你一定对线程池并不陌生。线程池作为并发编程中的一大利器&#xff0c;其重要性不言而喻。今天&#xff0c;我将以对话的…...

新型大语言模型的预训练与后训练范式,Meta的Llama 3.1语言模型

前言&#xff1a;大型语言模型&#xff08;LLMs&#xff09;的发展历程可以说是非常长&#xff0c;从早期的GPT模型一路走到了今天这些复杂的、公开权重的大型语言模型。最初&#xff0c;LLM的训练过程只关注预训练&#xff0c;但后来逐步扩展到了包括预训练和后训练在内的完整…...

硬菜3道+馒头

硬菜3道 1、可乐鸡翅 》鸡翅滑刀酱油耗油胡椒粉盐》 搅拌腌制3-5分钟 》油锅&#xff0c;直到2面煎黄 》倒入可乐&#xff0c;到大火收汁&#xff0c;出锅 2、洋葱牛肉 》冻牛肉切薄酱油耗油胡椒粉盐 》手指摇匀 》加入生粉水&#xff0c;继续摇匀》直到粘稠 》油锅牛肉炒半熟&…...

YOLO系列论文综述(从YOLOv1到YOLOv11)【第14篇:YOLOv11——在速度和准确性方面具有无与伦比的性能】

YOLOv11 1 摘要2 改进点3 模型性能4 模型架构 YOLO系列博文&#xff1a; 【第1篇&#xff1a;概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇&#xff1a;YOLO系列论文、代码和主要优缺点汇总】【第3篇&#xff1a;YOLOv1——YOLO的开山之作】【第4篇&#xff…...

【Spring】聊聊@EventListener注解原理

1.一个Demo出发 在平时的开发中&#xff0c;其实编写同步线程代码是比较容易的&#xff0c;但是如何将一些操作和另外一些操作进行解除耦合&#xff0c;而事件方式 是一种很好的解耦合方式&#xff0c;比如当一个用户注销一个APP之后&#xff0c;需要发送一些短信 让他引流回来…...

LangChain——HTML文本分割 多种文本分割

Text Splitters 文本分割器 加载文档后&#xff0c;您通常会想要对其进行转换以更好地适合您的应用程序。最简单的例子是&#xff0c;您可能希望将长文档分割成更小的块&#xff0c;以适合模型的上下文窗口。 LangChain 有许多内置的文档转换器&#xff0c;可以轻松地拆分、组…...

梯度爆炸与消失

梯度爆炸和梯度消失 一、概念解析 &#xff08;一&#xff09;梯度爆炸 定义 在深度神经网络训练的反向传播过程中&#xff0c;梯度爆炸是指梯度的值过大的现象。这会使模型的参数更新出现异常。 产生原因 深层网络与链式法则&#xff1a;深度神经网络按链式法则计算某层权重…...

关于扩散方程的解

1-D 扩散方程的形式 Cauchy齐次方程 这个解无积分无级数&#xff0c;很简单的形式 美其名曰&#xff1a;基本解。 把基本解和初值做卷积&#xff0c;就得到cauchy方程的解。...

如何监控Elasticsearch集群状态?

大家好&#xff0c;我是锋哥。今天分享关于【如何监控Elasticsearch集群状态&#xff1f;】面试题。希望对大家有帮助&#xff1b; 如何监控Elasticsearch集群状态&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 监控 Elasticsearch 集群的状态对于确保…...

关于音频 DSP 的接口种类以及其应用场景介绍

在音频系统中&#xff0c;DSP&#xff08;数字信号处理器&#xff09;扮演着重要角色&#xff0c;通常会通过不同的接口与音频系统中的其他组件&#xff08;如功放、扬声器、音频源等&#xff09;进行连接。以汽车应用场景为例&#xff0c;以下是一些常见的接口类型分类及其介绍…...

arkTS:持久化储存UI状态的基本用法(PersistentStorage)

arkUI&#xff1a;持久化储存UI状态的基本用法&#xff08;PersistentStorage&#xff09; 1 主要内容说明2 例子2.1 持久化储存UI状态的基本用法&#xff08;PersistentStorage&#xff09;2.1.1 源码1的相关说明2.1.1.1 数据存储2.1.1.2 数据读取2.1.1.3 动态更新2.1.1.4 显示…...

电商网站建设开发的语言有哪些/企业网络营销策略

我们先看规则&#xff1a; 1、所有使用公众号支付方式发起支付请求的链接地址&#xff0c;都必须在支付授权目录之下&#xff1b;2、最多设置5个支付授权目录&#xff0c;且域名必须通过ICP备案&#xff1b;3、头部要包含http或https&#xff0c;须细化到二级或三级目录&#x…...

网页广告怎么彻底删除/沈阳网站seo公司

本文记录了在GEE&#xff08;GoogleEarthEngine&#xff09;平台上&#xff0c;使用UCSB-CHG/CHIRPS/DAILY数据集&#xff0c;绘制一个指定点的一段时间内的降水量累计值折线图的代码&#xff0c;也记录了绘制一个区域一段时间内的降水量均值的折线图代码。其中累积降水量使用每…...

wordpress 地址插件/seopeixun

1、为什么使用em em也是css中的一种单位&#xff0c;和px类似。很多人会疑惑为什么有了px之后还要使用em&#xff0c;而且em使用起来相对于px来讲比较麻烦。 em主要是应用于弹性布局&#xff0c;下面给出一个小栗子说明em的强大之处 <!DOCTYPE html> <html lang"…...

国家备案网查询系统/济南seo的排名优化

show status;show processlist...

web前端做音乐网站/网站优化排名方法有哪些

由于使用display:none来设置的隐藏&#xff0c;每次刷新后对应的id为filePicker的div的宽高都默认为1px&#xff0c;按钮当然没有反应&#xff0c;网上找了很多具体都说不要使用display:none&#xff0c;使用css样式来设置。以下语句即解决了此问题。 <style> #filePick…...

上海城隍庙必吃美食/seo营销培训

阻力前提 &#xff1a;当有张表同一个字段管理2张表是&#xff0c;今天用one-to-moeny试了一下&#xff0c;开始配置one-to-many时&#xff0c;是不能同时写入数据&#xff1b;后来《Batch update returned unexpected row count from update: 0 actual row count: 0 expected:…...