SqlSugar的Where用法
1、普通表达式查询
//id=@idvar list=db.Queryable<Student>().Where(it => it.Id == id).ToList();//多个条件var list2=db.Queryable<Student>().WhereIF(id>0,it => it.Id == id)// 如果id>0 添加条件 id=@id .WhereIF(name!=null,it => it.name== "a") //如果 name !=null 添加条件 name='a'.ToList();//id=@id or name like '%'+@name+'%'var list2 = db.Queryable<Student>().Where(it => it.Id == id||it.Name.Contains("jack")).ToList(); |
表达式: && 表示 and , || 表式 OR
2、根据SQL查询
//id=@idvar list=db.Queryable<Student>().Where("id=@id",new { id=1}).ToList();//id=@id or name like '%'+@name+'%'var list2 = db.Queryable<Student>().Where("id=@id or name like '%'+@name+'%' ",new { id=1,name="jack"}).ToList(); |
3、动态查询
[ {"FieldName":"id","ConditionalType":"0","FieldValue":"1"}, {"FieldName":"name","ConditionalType":"0","FieldValue":"jack"} ] //5.0.5.1 Json直接序列化 var conModels= db.Context.Utilities.JsonToConditionalModels(json) var student = db.Queryable<Student>().Where(conModels).ToList(); // id=1 and name=jack //手动构造 //var conModels = new List<IConditionalModel>(); //conModels.Add(new ConditionalModel{ FieldName = "id",ConditionalType=ConditionalType.Equal,FieldValue="1"}); //conModels.Add(new ConditionalModel{ FieldName = "name",ConditionalType=ConditionalType.Equal,FieldValue="jack"}) |
点击查看: https://www.donet5.com/Home/Doc?typeId=2314
4、动态拼表达式查询 ,拼拉姆达
//创建表达式var exp= Expressionable.Create<Student>() .And(it=>it.Id==1) .Or(it =>it.Name.Contains("jack")) .ToExpression();//注意 这一句 不能少//使用表达式 var list=db.Queryable<Student>().Where(exp).ToList();//多表查询var exp=Expressionable.Create<T1,T2>() |
5、条件拼接查询
var query = db.Queryable<Student>().Where(it=>it.Id==1); if(条件) query.Where(it => it.Name == "jack"); if(条件) query.Where(it => it.Id==1); int count=query.Clone().Count();//当query用于2个地方的时候一定要加Clone这点和EF有本质区别 var list=query.Clone.ToList(); |
6、链式条件查询
var query = db.Queryable<Student>() .WhereIF(!string.IsNullOrEmpty(name), it => it.Name.Contains(name)) .WhereIF(id>0, it => it.Id==id).ToList(); |
7、根据Class查询,根据实查询
var getAll = db.Queryable<Order>().WhereClass(new Order() { Name="a"},ignoreDefaultValue:true).ToList();//单个实体var getAll = db.Queryable<Order>().WhereClass(List<Order>,ignoreDefaultValue:true).ToList();//支持集合//ignoreDefaultValue=true 那么实体中的ID=0就不是条件,ID=1就会当作条件//根据实体类查询 |
8、根据Class中主键查询
var getAll = db.Queryable<Order>().WhereClassByPrimaryKey(new Order() { Id=1 }).ToList(); //单个实体 var getAll = db.Queryable<Order>().WhereClassByPrimaryKey(List<Order>).ToList(); //支持集合 //根据实体类中的主键查询 |
9、根据字典查询
适合多字段批量过滤
var getAll=db.Queryable<Order>().WhereColumns(new List<Dictionary<string, object>>).ToList() |
10、查询函数
Where中使用SqlFunc函数
var list=db.Queryable<Order>().Where(it=>SqlFunc.DateIsSame(it.Time,DateTime.Now)).ToList() |
https://www.donet5.com/Home/Doc?typeId=1190
11、Where中有子查询
var list= db.Queryable<Student>().Where(st=> SqlFunc.Subqueryable<School>().Where(sch=>sch.Id==st.SchoolId).Any()).ToList();//更多用法看菜单:子查询 |
12、Where中用SQL
var list=db.Queryable<Student>().Where("id=@id",new {id=1}).ToList() |
13、字符串表达式
5.1.4.107-preview14+
//程序启动时配置 StaticConfig.DynamicExpressionParserType = typeof(DynamicExpressionParser); StaticConfig.DynamicExpressionParsingConfig = new ParsingConfig()//用到SqlFunc需要配置这个属性 { CustomTypeProvider = new SqlSugarTypeProvider()//最下面 }; //注意:第二个参数必须要有$ //参数化:可以缓存创建性能好 //如果没有$ 需要用 FormattableStringFactory.Create("it=>it.Id=={0}", 1) //导航属性动态 var list3 = db.Queryable<UnitPerson011>().Where("it", $"it=>SqlFunc.Exists(it.Address.Id)").ToList(); //普通条件动态 var list4 = db.Queryable<UnitPerson011>().Where("it", $"it=>it.Name=={"a"}").ToList(); //动态类+动态条件 var list5=db.QueryableByObject(typeof(UnitPerson011)).Where("it", $"it=>it.Address.Id=={1}").ToList(); //扩展类型 public class SqlSugarTypeProvider : DefaultDynamicLinqCustomTypeProvider { public override HashSet<Type> GetCustomTypes() { var customTypes = base.GetCustomTypes(); customTypes.Add(typeof(SqlFunc));//识别SqlFunc return customTypes; } } |
SqlSugar的Where用法的更多相关文章
- sqlsugar的sum的用法
通过论坛的检索 查到三篇文章是关于sum的 http://www.codeisbug.com/Ask/9/4531 http://www.codeisbug.com/Ask/14/4128 文章1:2 ...
- .NET 开源SqlServer ORM框架 SqlSugar 3.0 API
3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 更新列表:https://github.com/sunkaixuan/SqlSugar/releases 优点: SqlSuga ...
- 开源网站.NETMVC+ Layui+SqlSugar+RestSharp
SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 ...
- Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8
3.0最新API: http://www.cnblogs.com/sunkaixuan/p/5911334.html 1.前言/Preface SqlSugar从去年到现在已经一年了,版本从1.0升到 ...
- 【开源项目SugarSite】ASP.NET MVC+ Layui+ SqlSugar+RestSharp项目讲解
SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 ...
- 轻量级.NET ORM、高性能.NET ORM 之 SqlSugar 开源ORM - ASP.NET
3.0最新API: http://www.cnblogs.com/sunkaixuan/p/5911334.html 1.前言/Preface SqlSugar从去年到现在已经一年了,版本从1.0升到 ...
- SqlSugar框架T4模板的使用
一.T4模板说明 1.T4模板是用来生成Model层实体类的 2.文件后缀为.tt 3.需要修改配置主要有:引用的SqlSugar.dll的位置.生成实体类的位置及生成实体类的命名空间 4.T4模板生 ...
- SqlSugar ORM 入门篇2 【查询】 让我们实现零SQL
SqlSugar在查询的功能是非常强大的,多表查询.分页查询 . 一对一查询.二级缓存.一对多查.WhenCase等复杂函数.Mapper功能.和拉姆达自定义扩展等,用好了是可以做到真正零SQL的一款 ...
- SqlSugar入门级教程+实例 (.net core下的)
官方参考:http://www.codeisbug.com/Doc/8 前言:这应该是目前最好用的ORM框架之一了,而且支持.net core,网上除了官方文档其他参考就少了点,自己整理了一下,大致包 ...
- .NET 5 ORM 八大实用技巧 干货 - SqlSugar ORM
介绍 sqlsugar已经在第一时间完美兼容.NET5并且已经有人在使用了, 很多人都担心用了开源框架遇到问题无法解决,导致前功尽弃,使用SqlSugar你大可放心,除了有详细文档和几年的大量用户积累 ...
随机推荐
- Java 使用 slf4j + log4j 写日志
没有SpringBoot等框架的情况下 pom.xml: <properties> <slf4j.version>1.7.26</slf4j.version> &l ...
- Codeforces Round #731 (Div. 3) A~G 解题记录
比赛链接:Here 1547A. Shortest Path with Obstacle 3个点 \(A,B,F\) ,前提 \(F\) 点为不可经过点,问 \(A\to B\) 最短路径长度 A题没 ...
- FastDFS 海量小文件存储解决之道
作者:vivo互联网服务器团队-Zhou Changqing 一.FastDFS原理介绍 FastDFS是一个C语言实现的开源轻量级分布式文件系统 . 支持 Linux.FreeBSD.AID 等Un ...
- 彻底搞懂 IO 底层原理
武侠小说里有很多的"心法"和"招式".计算机技术里的"心法"和"招式"呢,我们可以简称为"道"和&q ...
- RLHF · PbRL | QPA:选择 near on-policy query,加速 policy learning 收敛速度
论文题目:Query-Policy Misalignment in Preference-Based Reinforcement Learning,ICLR 2023 Spotlight(8 6 6) ...
- linux 通过docker安装 elasticsearch-head
本文为博主原创,未经允许不得转载: 1. 使用docker安装 elasticsearch-head #拉取镜像 docker pull mobz/elasticsearch-head:5 #创建容器 ...
- 比Nginx更好用的Gateway!
比Nginx更好用的Gateway! Token新开源Gateway,使用yarp实现的一个反向代理,支持界面操作动态添加集群添加路由绑定,并且支持动态添加域名绑定https证书,超强yarp+Fre ...
- Verdi基础-01
Verdi使用目标 生成fsdb波形 查看fsdb波形 追踪RTL代码 目录 Verdi历史 生成fsdb波形 三个变量&&三个命令 变量PATH LD_LIBRARY_PATH so ...
- 2023 SHCTF-校外赛道 PWN WP
WEEK1 nc 连接靶机直接梭 hard nc 同样是nc直接连,但是出题人利用linux命令的特性,将部分flag放在了特殊文件中 利用ls -a查看所有文件,查看.gift,可以得到前半段 然后 ...
- [转帖]NUMA导致的Oracle性能问题
https://www.cnblogs.com/realcp1018/p/6903721.html 背景简介: Oracle版本:11.2.0.4 OS 版本:OEL5.8 在一次Oracle的Dat ...