索引:

目录索引

一.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. ef和mysql使用(一)

    ef开发模式有3种:DateBase First(数据库优先).Model First(模型优先)和Code First(代码优先).这里我用的是code first 一个简单的例子: public ...

  2. Java设置PDF有序、无序列表

    文档中的设置有序或无序列表是一种反应内容上下级关系或者内容相同属性的方式,与单纯的文字叙述相比,它能有效增强文档内容的条理性,突出重点.因此,本文将分享通过Java编程在PDF文档中设置有序或无序列表 ...

  3. pfSense配置基于时间的防火墙规则

    基于时间的规则允许防火墙规则在指定的日期和/或时间范围内激活.基于时间的规则与任何其他规则的功能相同,只是它们在预定时间之外的规则集中实际上不存在. 基于时间的规则逻辑处理基于时间的规则时,调度计划确 ...

  4. MES是什么,MOM是什么?

    MES简介 MES(Manufacturing Execution System)制造执行系统,用于制造业车间级的信息化管理系统.单说MES系统这个概念比较广泛,大致分为以下几个方面:计划调度.生产. ...

  5. 【原创开源】网络版二代双通道示波器开源发布,支持电脑,手机和Pad等各种OS平台访问

    前言感谢大家的支持,提前奉上今年的国庆福利. 一代示波器发布于3年前,去年年底的时候发布了二代示波器,软件性能已经比较强劲,但依然有值得升级改进的地方,经过今年这半年多努力,在二代示波器的基础上再推出 ...

  6. Go语言strings包

    目录 strings包实现了用于操作字符的简单函数. func EqualFold 判断两个utf-8编码字符串(将unicode大写.小写.标题三种格式字符视为相同)是否相同. func Equal ...

  7. 字典fromkeys方法和update方法

    #Author : Kelvin #Date : 2019/1/17 15:27 #字典的update方法,是向调用者字典中添加另外一个字典 dict1 = {"name":&qu ...

  8. 写给 Android 开发的小程序布局指南,Flex 布局!

    一.序 Hi,大家好,我是承香墨影! 最近在做小程序,验证一些方向,开发效率确实很快,就是各种微信的审核有点费劲,但是总归是有办法解决的. 想要开发一款小程序,其实和我们正常写一款 App 类似,你需 ...

  9. 关闭 Mac 拼写自动纠正与横线转换

    如果你是个程序员, 如果你恰好用 mac 自带的 notes 来做笔记, 很大可能性, 你会在里面贴代码, 但是, Mac 的拼写检查和自动纠正功能,会把代码变成你不想要的样子, 比如, 它会为你首字 ...

  10. java~gradle构建公用包并上传到仓库

    java~gradle构建公用包并上传到仓库 我们一般会把公用的代码放在一个包里,然后其它 项目可以直接使用,就像你使用第三方包一样! 仓库 存储包的地方叫做仓库,一般可以分为本地仓库和远程仓库,本地 ...