索引:

目录索引

一.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. WebApi 之HelpPage帮助页

    1.创建解决方案 2.选择类型-Web API 3.设置项目生成XML路径 同时修改HelpPageConfig,代码调用XML文件位置 3.编写WebApi接口代码 4.启动项目 查看接口 5.测试 ...

  2. 适配器模式(Adapter Pattern)

    适配器模式概述 定义:将一个类的接口转化成客户希望的另一个接口,适配器模式让那些接口不兼容的类可以一起工作.别名(包装器[Wrapper]模式) 它属于创建型模式的成员,何为创建型模式:就是关注如何将 ...

  3. Windows Server 2016-图形化之客户端加域(一)

    要使用域环境,您必须将计算机加入域.只有加入域的计算机才能使用域资源.在连接期间,将在域中创建一个计算机帐户,以便将计算机作为成员进行身份验证.前边两节我们写到Windows Server 2016- ...

  4. ERROR 1129 (HY000): mysqladmin flush-hosts

    mysql报错:ERROR 1129 (HY000): Host * is blocked because of many connection errors; unblock with 'mysql ...

  5. css+js调整当前界面背景音量

    展示效果 html代码: <div> <audio id="audio" controls src="https://dbl.5518pay.com/r ...

  6. Devops step by step

    接着上次分享的devops历程[Followme Devops实践之路], 大家希望能够出一个step by step手册, 那今天我就来和手把手来一起搭建这么一套环境, 演示整个过程! 实验环境需要 ...

  7. springboot实现数据库中数据导出Excel功能

    [转载]原文地址:https://blog.csdn.net/wilson_m/article/details/79021458 功能介绍 网上查找了一堆的数据导出代码,可能是自己基础比较薄弱的原因还 ...

  8. 小白学习Python之路---开发环境的搭建

    本节内容 1.Python的介绍 2.发展史 3.安装Python 4.搭建开发环境 5.Hello World程序 一.Python的介绍 Python的创始人为荷兰人吉多·范罗苏姆(Guido v ...

  9. 第4章 简单的C程序设计——选择结构程序设计

    在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断.实际上,很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两 ...

  10. 【Linux篇】--awk的使用

    一.前述 awk是一个强大的文本分析工具.相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片 ...