SqlSugar的Where用法
1、普通表达式查询
//id=@id var 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=@id var 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你大可放心,除了有详细文档和几年的大量用户积累 ...
随机推荐
- 断点续传(上传)C#版
断点续传(上传)Java版 1. 客户每次上传前先获取一下当前文件已经被服务器接受了多少 2. 上传时设定偏移量 服务端代码如下: /// <summary> /// 断点续传,获取已上传 ...
- LinkedBlockingQueue实现的生产者和消费者模型
首先 LinkedBlockingQueue 是线程安全的阻塞队列,LinkedBlockingQueue实现的生产者和消费者模型 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayL ...
- Linux系统用户态和内核态
Unix/Linux的体系架构 如上图所示,从宏观上来看,Linux操作系统的体系架构分为用户态和内核态(或者用户空间和内核空间).内核从本质上看是一种软件-----控制计算机的硬件资源,并提供上层应 ...
- 基于 SpringBoot+vue的地方美食系统,可作为毕业设计
1 简介 这个项目是基于 SpringBoot和 Vue 开发的地方美食系统,包括系统功能模块,管理员功能模块,用户管理模块,功能齐全,可以作为毕业设计,课程设计等.源码下载下来,进行一些简单的部署, ...
- IntelliJ IDEA项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
IntelliJ IDEA项目导入时报错: The import javax.servlet.http.HttpServletRequest cannot be resolved 翻译一下错误信息是说 ...
- Eight HDU - 1043 (反向搜索 + 康拓展开 / A* + BFS / IDA* )
题目描述 简单介绍一下八数码问题: 在一个3×3的九宫格上,填有1~8八个数字,空余一个位置,例如下图: 1 2 3 4 5 6 7 8 在上图中,由于右下角位置是空的,你可以移动数字,比如可以将数字 ...
- L1-020 帅到没朋友 (20分)
当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋友圈的个数:随后N行,每行首先给 ...
- vivo 商城前端架构升级-总览篇
本文首发于 vivo互联网技术 微信公众号链接: https://mp.weixin.qq.com/s/vD9yvYNaxTQBLABik6aqNg作者:官网商城前端团队 [背景] 一年前 vivo ...
- 分享10个高级sql写法
本文主要介绍博主在以往开发过程中,对于不同业务所对应的 sql 写法进行归纳总结而来.进而分享给大家. 本文所讲述 sql 语法都是基于 MySql 8.0+ 博主github地址:http://gi ...
- 简单的winform学生管理系统Demo
界面效果 练习重点 1. 关系表的创建 2. 增删改查的操作,及sqlhelper的封装 3. 跨页面数据传递,编辑页数据提交后数据局步刷新到列表数据 项目源码 FrmStuddentList pub ...