当前位置: 首页 > 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;我将以对话的…...

PHP开发者必看:如何在本地环境快速搭建gRPC和Protobuf开发环境

PHP开发者必看&#xff1a;如何在本地环境快速搭建gRPC和Protobuf开发环境 作为一名长期与PHP打交道的开发者&#xff0c;我深刻理解在微服务架构盛行的当下&#xff0c;掌握gRPC和Protobuf技术栈的重要性。记得第一次尝试在本地搭建环境时&#xff0c;光是版本兼容问题就耗费了…...

AI写论文实用宝典,4款AI论文生成工具搞定各类论文写作!

在2025年的学术写作智能化浪潮中&#xff0c;越来越多的人开始依赖AI写论文工具进行创作。尽管这些工具的使用越来越普遍&#xff0c;但在撰写硕士、博士论文等较长篇幅的学术文章时&#xff0c;许多AI论文写作工具往往陷入缺乏理论深度和逻辑性不强的问题。普通的AI写专著或AI…...

5分钟完成专业级黑苹果配置:OpCore Simplify终极简化指南

5分钟完成专业级黑苹果配置&#xff1a;OpCore Simplify终极简化指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经为黑苹果配置的复杂性…...

Dexter深度解析:如何用多Agent架构打造自主金融研究AI

一、为什么需要金融AI Agent&#xff1f; 1.1 传统金融研究的痛点 作为开发者&#xff0c;你是否遇到过这样的场景&#xff1a;需要分析一家上市公司的财务状况&#xff0c;却要花费数小时甚至数天时间&#xff1f; 传统金融研究面临三大挑战&#xff1a; 数据分散&#xff1a;…...

嵌入式工程师技术成长路径:从单片机到Linux驱动开发

嵌入式工程师职业发展路径的技术思考1. 职业发展阶段与技术演进1.1 单片机开发阶段对于刚毕业的电子工程专业学生&#xff0c;单片机开发通常是职业起点。这一阶段主要涉及&#xff1a;8/16/32位微控制器(如STM32系列)的应用开发基础外设驱动开发(GPIO、UART、SPI、I2C等)实时操…...

WarcraftHelper:魔兽争霸3终极优化指南 - 解锁现代硬件性能

WarcraftHelper&#xff1a;魔兽争霸3终极优化指南 - 解锁现代硬件性能 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽…...

云容笔谈开源镜像优势:免编译、免依赖、BF16原生支持,开箱即生成

云容笔谈开源镜像优势&#xff1a;免编译、免依赖、BF16原生支持&#xff0c;开箱即生成 最近在尝试各种AI图像生成工具时&#xff0c;我发现了一个很有意思的现象&#xff1a;很多工具要么安装配置复杂&#xff0c;要么生成效果不尽如人意&#xff0c;特别是想要生成具有东方…...

3步实现Windows系统极致优化:Win11Debloat专业指南

3步实现Windows系统极致优化&#xff1a;Win11Debloat专业指南 【免费下载链接】Win11Debloat 一个简单的PowerShell脚本&#xff0c;用于从Windows中移除预装的无用软件&#xff0c;禁用遥测&#xff0c;从Windows搜索中移除Bing&#xff0c;以及执行各种其他更改以简化和改善…...

嵌入式系统SOC验证与Linux实时补丁技术解析

嵌入式系统软件工程师面试技术要点解析 1. SOC原型验证技术体系 1.1 SOC验证工作内容与方法论 SOC原型验证是芯片设计流程中的关键环节&#xff0c;主要工作内容包括&#xff1a; 功能验证&#xff1a;确保设计符合规范要求 性能验证&#xff1a;评估系统吞吐量、延迟等指标…...

Workbench与Ls-Dyna中位移与远程位移设置的关键字映射解析

1. 固定支撑的关键字映射与实战配置 在有限元分析中&#xff0c;固定支撑是最基础的边界条件之一。Workbench和Ls-Dyna对固定支撑的实现逻辑完全不同&#xff0c;但最终达到的约束效果是等效的。先看Workbench端的操作&#xff1a;在Mechanical界面右键选择Ls-Dyna环境&#xf…...