索引:

目录索引

一.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. Vue.js 学习笔记 第4章 v-bind 及 class与style绑定

    本篇目录: 4.1 了解v-bind指令 4.2 绑定class的几种方式 4.3 绑定内联样式 DOM元素经常会动态地绑定一些class类名或style样式,本章将介绍使用v-bind指令来绑定cl ...

  2. Android之应用市场排行榜、上架、首发

    文章大纲 一.应用市场排行榜介绍二.应用市场上架介绍三.应用市场首发介绍四.参考文档   一.应用市场排行榜介绍   iiMedia Research(艾媒咨询)权威发布<2017-2018中国 ...

  3. Python之路【第七篇】:Python装饰器

    阅读目录 一.装饰器 1.装饰器的概念 #装饰器定义:本质就是函数,功能是为其他函数添加附加功能 二.装饰器需要遵循的原则 #原则: 1.不修改被修饰函数的源代码 2.不修改被修饰函数的调用方式 装饰 ...

  4. (三)图数据库neo4j的安装配置

    (一)neo4j安装 neo4j有社区版本和企业版,社区版本是免费的,企业版本是收费的.在linux上安装如下步骤: 1.将下载的neo4j-enterprise-3.4.0-unix.tar.gz包 ...

  5. sql语句 汉字转拼音首字母

    (1)------------------------------------------------------------------------------------------------- ...

  6. 【转载】 Sqlserver中查看自定义函数被哪些对象引用

    Sqlserver数据库中支持自定义函数,包含表值函数和标量值函数,表值函数一般返回多个数据行即数据集,而标量值函数一般返回一个值,在数据库的存储过程中可调用自定义函数,也可在该自定义函数中调用另一个 ...

  7. Windows10文件目录下添加 Shift+右键打开管理员Powershell窗口

    背景(可略过) 目前在调试 Python 程序,遇到了一个问题:当程序中包含多线程时,使用 IDLE 运行是不会执行多线程的语句的,在网上一顿搜罗了解到这种情况可以换成在命令行下执行.好像用 PyCh ...

  8. MySQL 文章目录

    MySQL系列: MySQL CREATE TABLE语法 MySQL 复制表结构 MySQL 对比数据库表结构 MySQL 处理插入过程中的主键唯一键重复值办法 MySQL 启动原理剖析 MySQL ...

  9. 程序员从宏观、微观角度浅析JVM虚拟机!

    1.问题 1.JAVA文本文件如何被翻译成CLASS二进制文件? 2.如何理解CLASS文件的组成结构? 3.虚拟机如何加载使用类文件的生命周期? 4.虚拟机系列诊断工具如何使用? 5.虚拟机内存淘汰 ...

  10. 开源图像标注工具labelme的安装使用及汉化

    一 LabelMe简介 labelme是麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像标注工具,人们可以使用该工具创建定制化标注任务或执行图像标注,项目源代码已经开源. 项目开 ...