索引:

目录索引

一.API 列表

  1.WhereSegment 属性,指示 根据条件 动态拼接 where 查询过滤条件

    见如下示例.

二.API 单表-完整 方法 举例

             // 上下文条件 变量
var userId = "08d6036b-0a7e-b07d-b9bd-af03841b3baa";
var firstName = "伏"; var where = Conn.Queryer<Agent>().WhereSegment; // 根据条件 判断 是否 拼接 UserId 字段 的 过滤条件
if (!userId.IsNullStr())
{
where = where.And(it => it.UserId == Guid.Parse(userId));
} // 根据条件 判断 是否 拼接 Name 字段 的 过滤条件
if (!firstName.IsNullStr())
{
where = where.And(it => it.Name.StartsWith(firstName));
} // 对 WhereSegment 设定的条件 进行 select 动作
var res1 = await where.QueryListAsync(); Assert.True(res1.Count==);

  以 MySQL 为例,生成 SQL 如下,其中 ?Name_2 的值自动生成为 【伏%】 :

 select *
from `agent` where true
and `UserId`=?UserId_1
and `Name` like ?Name_2;

三.API 多表-连接 方法 举例

             // 上下文 分页 变量
var pageIndex = ;
var pageSize = ; // 上下文 条件 变量
var level = (Nullable<AgentLevel>)AgentLevel.DistiAgent;
var pk1 = Guid.Parse("fbad4af4-c160-4e66-a8fc-0165443b4db0"); // 可 自由混合书写 多个 inner join 或 left join
var where = Conn
.Queryer(out Agent agent, out AgentInventoryRecord record)
.From(() => agent)
.LeftJoin(() => record)
.On(() => agent.Id == record.AgentId).WhereSegment; // 根据条件 判断 是否 拼接 AgentLevel 字段 的 过滤条件
if (level != null)
{
where = where.And(() => agent.AgentLevel == level); // and demo
} // 根据条件 判断 是否 拼接 Id 字段 的 过滤条件
if (pk1 != Guid.Empty)
{
where = where.Or(() => agent.Id == pk1); // or demo
} // 对 WhereSegment 设定的条件 进行 select 动作
var res1 = await where.QueryPagingAsync<Agent>(pageIndex, pageSize); Assert.True(res1.Data.Count == );
Assert.True(res1.TotalCount == );

  以 MySQL 为例,生成 SQL 如下:

 -- 总数据量 sql

 select count(*)
from (
select agent.`*`
from `agent` as agent
left join `agentinventoryrecord` as record
on agent.`Id`=record.`AgentId` where true
and agent.`AgentLevel`=?AgentLevel_4
or agent.`Id`=?Id_5
) temp; -- 分页数据 sql select agent.`*`
from `agent` as agent
left join `agentinventoryrecord` as record
on agent.`Id`=record.`AgentId` where true
and agent.`AgentLevel`=?AgentLevel_4
or agent.`Id`=?Id_5
order by agent.`Id` desc
limit 10,10;

                                         蒙

                                    2019-04-18 23:30 周四

MyDAL - .Where() 之 .WhereSegment 根据条件 动态设置 Select查询条件 使用的更多相关文章

  1. MyDAL - .UpdateAsync() 之 .SetSegment 根据条件 动态设置 要更新的字段 使用

    索引: 目录索引 一.API 列表 1.SetSegment 属性,指示 根据条件 动态拼接 要修改的字段 见如下示例. 二.API 单表-完整 方法 举例 // update 要赋值的变量 var ...

  2. [2014-12-30]如何动态构造Lambda表达式(动态构造Lambda查询条件表达式)

    声明 本文对Lambda表达式的扩展,示例代码来源于网络. 场景描述 web开发查询功能的时候,如果查询条件比较多,就会遇到动态组合查询条件的情况.在手写sql的情况下,我们一般会根据传入的参数,针对 ...

  3. NC 自定义项参照设置为查询条件

    select * from pub_query_condition where pk_templet in (select id from pub_query_templet where node_c ...

  4. 多条件动态LINQ 组合查询

    本文章转载:http://www.cnblogs.com/wangiqngpei557/archive/2013/02/05/2893096.html 参考:http://dotnet.9sssd.c ...

  5. 我的一个PLSQL函数 先查询再插入数据库的函数 动态SQL拼接查询条件、通用游标、记录定义(封装部分查询字段并赋值给游标)、insert select 序列、常量【我】

    先查询再插入数据库的函数 CREATE OR REPLACE FUNCTION F_REVENUE_SI(l_p_cd in Varchar2, l_c_cd in Varchar2, l_prod_ ...

  6. WINFORM 多条件动态查询 通用代码的设计与实现

    经常碰到多条件联合查询的问题,以前的习惯认为很简单总会从头开始设计布局代码,往往一个查询面要费上老半天的功夫,而效果也不咋地.     前段时间做了个相对通用的多条件动态查询面,复用起来还是挺方便的, ...

  7. MongoDB查询条件常用设置

    原文地址:http://blog.csdn.net/mcpang/article/details/8731065 Java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表: BasicD ...

  8. java 操作mongodb查询条件的常用设置

    java操作mongodb进行查询,常用筛选条件的设置如下: 条件列表:BasicDBList condList = new BasicDBList(); 临时条件对象:BasicDBObject c ...

  9. 分别在javascript和JSP中动态设置下拉列表默认值

    一.JavaScript中动态设置select标签中<option>选项的默认值: 比如,要完成下边这个下拉列表的动态显示,并且当进行前后翻页时,下拉列表中的值自动更新为当前页码: 图1 ...

随机推荐

  1. Android版数据结构与算法(六):树与二叉树

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 之前的篇章主要讲解了数据结构中的线性结构,所谓线性结构就是数据与数据之间是一对一的关系,接下来我们就要进入非线性结构的世界了,主要是树与图,好了接 ...

  2. 大数据与 AI 生态中的开源技术总结

    本文由云+社区发表 作者:堵俊平 在数据爆炸与智能革命的新时代,新的平台与应用层出不穷,开源项目推动了前沿技术和业界生态快速发展.本次分享将以技术和生态两大视角来看大数据和人工智能技术的发展,通过分析 ...

  3. 面向对象OOP概念描述

    面向对象三大特征:封装,继承,多态 封装就是把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法 继承就是在已经存在的类的定义作为基础,建立新的技术.新定义的类可以添加新的数据或功能,也可以 ...

  4. 简单几步用纯CSS3实现3D翻转效果

    作为前端开发人员的必修课,CSS3翻转能带我们完成许多基本动效,本期我们将用CSS3实现hover翻转效果~ 第一步非常简单,我们简单画1个演示方块,为其 添加transition和transform ...

  5. caffe安装教程(Ubuntu14+GPU+pycaffe+anaconda2)

    caffe安装教程 本文所使用的底层环境配置:cuda8.cudnn6.OpenCV2.4.5.anaconda2(Python2.7).如使用其他版本的环境,如cuda,可安装自己的版本,但须在相应 ...

  6. 深入理解 new 操作符

    和其他高级语言一样 JavaScript 也有 new 操作符,我们知道 new 可以用来实例化一个类,从而在内存中分配一个实例对象. 但在 JavaScript 中,万物皆对象,为什么还要通过 ne ...

  7. 开启全民窃听风云——C#智能录音录像录屏程序源码放送!

    ·引子 我这人从小有个坏毛病,就是喜欢偷窥别人隐私.当然,在道德上,我时刻要求自己做一名正人君子,只不过是心理上有这癖好罢了.所以我从小就对窃听.窃视.黑客技术.破解技术等疯狂着迷!实际上这也是我走上 ...

  8. mybatis入门系列二之输入与输出参数

    mybatis入门系列二之详解输入与输出参数   基础知识   mybatis规定mapp.xml中每一个SQL语句形式上只能有一个@parameterType和一个@resultType 1. 返回 ...

  9. 跟我一起学opencv 第二课之图像的掩膜操作

    1.掩膜(mask)概念 用选定的图像,图形或物体,对处理的图像(全部或局部)进行遮挡,来控制图像处理的区域或处理过程.用于覆盖的特定图像或物体称为掩模或模板.光学图像处理中,掩模可以足胶片,滤光片等 ...

  10. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之三 || Swagger的使用 3.1

    常见问题 1.经常有小伙伴遇到这个错误 这是因为接口json文档定义和调用不是一个 1.定义: ConfigureServices 方法中的  services.AddSwaggerGen 注册的一个 ...