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你大可放心,除了有详细文档和几年的大量用户积累 ...
随机推荐
- Intelij IDEA 隐藏 .idea
如图 这两文件夹是 IDEA 自动生成的,在开发过程中用不到它.可以把它隐藏(不在 IDEA中显示),操作如下: OK后,立即生效
- 【Vue】表单数据双向绑定 vue生命周期 fetch和axios发送请求 Vue全局组件
目录 昨日回顾 表单数据双向绑定(重要) checkbox单选 --- 布尔值 checkbox多选 --- 数组 radio单选 --- 字符串 给后端发送数据 购物车案例 全选按钮 商品添加删除 ...
- #1016:Prime Ring Problem(经典DFS)
原题链接 题意:很容易理解,就是让你输出满足相邻的相加是素数的序列(注意不要重复) 思路就是深搜思想把每种情况遍历一次 代码实现: #include<iostream> #include& ...
- 5 Englishi 词根
词根 1 ced/cess = go 行走 precede pre=before ced =go unprecedentedly un pre ced +ed变成adj +ly 变 ...
- 【vue基础篇】一看就懂的vue环境变量配置
相关播客地址: https://juejin.cn/post/6844903859878363149 https://juejin.cn/post/6844903682178285575 视频学习资料 ...
- Vue和Android交互,Android回调Vue的方法
https://blog.csdn.net/Zhizhiwei/article/details/80425204 Android webview 与 js(Vue) 交互 https://blog.c ...
- vue判断用户在页面停留时间是否超时
需求 当用户停留超过15分钟后,用户提交订单,提示用户超时并重新加载页面 代码 data () { return { // 超时定时器 overTimer: null, // 是否超时 isOvert ...
- 解决JedisNoReachableClusterNodeException,No reachable node in cluster报错
通过jedis连接redis集群时报如下的错误:JedisNoReachableClusterNodeException,No reachable node in cluster 本机连接均正常: ...
- java 服务 JVM 参数设置配置
本文为博主原创,转载请注明出处: 常用JVM 配置参数: -Xmx:表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小. -Xms:表示java虚拟机堆区内存初始内存分配 ...
- Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
转载请注明出处: 云服务器ECS(Linux) CPU使用率超过70%,严重时可达到100%,服务器响应越来越慢. 服务器中存在恶意minerd.tplink进程 该进程是服务器被入侵后,被恶意安装 ...