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你大可放心,除了有详细文档和几年的大量用户积累 ...
随机推荐
- Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
1.Nuget包添加引用: X.PagedList.Mvc.Core 2.View: @using VipSoft.Web.Model @model X.PagedList.IPagedList< ...
- 10.4K Star!程序员为程序员针对性优化的开源免费笔记
平时我一直用Notion来记录内容为主,但也一直关注着其他开源产品.上周正好看到一款非常受欢迎的开源免费笔记,今天就推荐给大家:VNote. VNote一个由程序员为程序员打造的开源笔记应用,基于Qt ...
- JSP 学习笔记 | 五、MVC模式和三层架构 & JSP 案例实战
前文:JSP 学习笔记 | 四.JSP标准标签库(JSTL)个人使用指南 前文:JSP 学习笔记 | 三.EL 表达式简述 前文:JSP 学习笔记 | 二.JSP 脚本 & 案例实现 & ...
- 利用PE工具箱安装WINDOWS系统
一. 进入PE系统 U盘插入电脑,开机多次按F12(联想F12,华硕ESC,DELL F9,微星F11,大部分都是这样,实在不行就按F2进BIOS改)键进入类似如下图界面,选择U盘启动,(能选UE ...
- ngix反向代理服务器
Nginx ("engine x") 是一个高性能的HTTP 和反向代理 服务器,在大负载的情况下表现十分优秀. 1.正向代理 正向代理也是大家最常接触的到的代理模式.正向代理最大 ...
- 【iOS源码混淆工具】iOS代码混淆工具
主要功能 Ipa Guard是一款功能强大的ipa混淆工具,不需要ios app源码,直接对ipa文件进行混淆加密.可对IOS ipa 文件的代码,代码库,资源文件等进行混淆保护. 可以根据设置对函数 ...
- mock使用
- vant下拉加载更多,上拉刷新
https://www.bilibili.com/video/BV1zq4y1p7ga?p=218 List 组件通过 loading 和 finished 两个变量控制加载状态,当组件滚动到底部时, ...
- shell脚本(15)-sed命令
文档目录一.sed-简介1.shell对文件操作介绍2.sed命令简介3.sed语法: sed [options] '{command}{flags}' [filename]二.sed-命令选项( - ...
- linux chown 与 chmod 命令的使用
本文为博主原创,未经允许不得转载: 最近在做 linux 系统安全管理检查操作,频繁的用到了 chown 与 chmod 两个命令,觉得有必要对着两个命令总结一下. 一. chown 命令: 1. 设 ...