索引:

目录索引

一.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. Python中使用type、metaclass动态创建方法和属性

    1: type() 我们知道动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Person的class: class Person(obj ...

  2. iOS----------demo总结

    1.demo总结           2.第三方使用 一.demo总结 1.选择相册单张照片 二.第三方使用

  3. 一起学Android之Menu

    概述 菜单(Menu)在Android开发中,是一种常见的用户界面组件,通过使用菜单Api可以给用户提供常见的一致的体验.本文主要讲解三种菜单的相关内容. 菜单的分类 选项菜单(OptionsMenu ...

  4. Git 中 .gitignore 的配置语法

    一.前言 在日常的开发中,当我们需要将一个项目提交到 Git 时,并不是所有的文件都需要提交,比如一些自动生成的文件,类似于 .idea 文件.class 文件等,这时候就可以使用.gitignore ...

  5. kubernetes 客户端KubeClient使用及常用api

    KubeClient是kubernetes 的C#语言客户端简单易用,KubeClient是.NET Core(目标netstandard1.4)的可扩展Kubernetes API客户端, gith ...

  6. CTF取证方法大汇总,建议收藏!

    站在巨人的肩头才会看见更远的世界,这是一篇来自技术牛人的神总结,运用多年实战经验总结的CTF取证方法,全面细致,通俗易懂,掌握了这个技能定会让你在CTF路上少走很多弯路,不看真的会后悔! 本篇文章大约 ...

  7. Uber是如何重新思考GPS定位的(尤其是在城市峡谷中)

    郑昀(公众号:老兵笔记) 20180424 2018年4月19日,Uber 公布了 GPS 优化算法,https://eng.uber.com/rethinking-gps/,针对GPS定位在城市环境 ...

  8. centos6.7 配置MongoDB日志

    这篇日志记录了笔者最近在centos6.7的系统中配置MongoDB的流程,参考了博客https://www.centos.bz/2017/08/centos-6-5-yum-install-mong ...

  9. java8 时间使用

    为什么需要新的时间API 文章来源:https://www.cnblogs.com/guozp/p/10342775.html 在Java 8之前的日期/时间API之前,现有的与日期和时间相关的类存在 ...

  10. GC参考手册 —— GC 调优(工具篇)

    JVM 在程序执行的过程中, 提供了GC行为的原生数据.那么, 我们就可以利用这些原生数据来生成各种报告.原生数据(raw data) 包括: 各个内存池的当前使用情况, 各个内存池的总容量, 每次G ...