C#字典转换成where条件
where 1=1 and Dictionary[key1]=Dictionary[value1] and Dictionary[key2]=Dictionary[value3]。。。。
/// <summary>
/// 传入一个字段返回where条件
/// </summary>
/// <param name="where">字段</param>
/// <param name="tableAlias">可以为空</param>
/// <returns></returns>
protected string GetWhere(Dictionary<string, object> where, string tableAlias)
{
string sql = "";
string aliasName = string.Empty;
if (!string.IsNullOrEmpty(tableAlias))
{
aliasName = tableAlias + ".";
}
if (where == null)
{
return sql;
}
string joinList = string.Empty;
foreach (var item in where)
{
if (string.IsNullOrEmpty(sql))
{
sql += " where ";
}
else if (!string.IsNullOrEmpty(sql.Replace("where", "").Trim()))
{
sql += " and ";
}
string speCode = "┝┝┞┞├├┼┽┾┿╀╂┣─┐┎";
if (item.Value == null)
{
sql += "nvl(" + aliasName + item.Key + ",'"+speCode+"') = '"+speCode+"'";
}
else if (string.IsNullOrEmpty(item.Value.ToString()))
{
sql += "nvl(" + aliasName + item.Key + ",'"+speCode+"') = '"+speCode+"'";
}
else if (item.Value is List<string>)
{
List<string> valueList = (List<string>)item.Value;
string valueStr = "";
if (valueList.Count > 1)
{
//sql += " in (" + valueStr + ") ";
int strIndex = 0;
valueList = valueList.Distinct().ToList();
foreach (var str in valueList)
{
if (strIndex > 0)
{
valueStr += " union all ";
}
valueStr += " select '" + str + "' as TEMP" + item.Key + " from dual ";
strIndex++;
}
joinList += " inner join (" + valueStr + ") " + item.Key + "TABLE ON " + aliasName + item.Key +
"=" + item.Key + "TABLE.TEMP" + item.Key;
if (sql.EndsWith("and "))
{
sql = sql.Substring(0, sql.Length - 4);
}
}
else
{
foreach (var str in valueList)
{
valueStr += "'" + str + "',";
}
valueStr = valueStr.TrimEnd(',');
sql += aliasName + item.Key;
sql += " = " + valueStr + " ";
}
}
else if (item.Value is List<int>)
{
List<int> valueList = (List<int>)item.Value;
string valueStr = "";
foreach (var str in valueList)
{
valueStr += str + ",";
}
valueStr = valueStr.TrimEnd(',');
sql += aliasName + item.Key;
if (valueList.Count > 1)
{
sql += " in (" + valueStr + ") ";
}
else
{
sql += " = " + valueStr + " ";
}
}
else if (item.Value is List<decimal>)
{
List<decimal> valueList = (List<decimal>)item.Value;
string valueStr = "";
foreach (var str in valueList)
{
valueStr += str + ",";
}
valueStr = valueStr.TrimEnd(',');
sql += aliasName + item.Key;
if (valueList.Count > 1)
{
sql += " in (" + valueStr + ") ";
}
else
{
sql += " = " + valueStr + " ";
}
}
else if (item.Value is string)
{
sql += aliasName + item.Key + " = '" + item.Value.ToString() + "'";
}
else
{
sql += aliasName + item.Key + " = " + item.Value.ToString();
}
}
if (string.IsNullOrEmpty(sql.Replace("where", "").Trim()))
{
sql += " 1=1 ";
}
//选择是否需要比如分区控制之类的
//if (!where.ContainsKey("F_SITE_ID"))
//{
//sql += CommomBus.GetPatitionFilter(tableAlias);
//}
return joinList + " " + sql;
}
转载于:https://www.cnblogs.com/isking/p/6228777.html
C#字典转换成where条件相关推荐
- pandas将字典转换成dataframe,两重字典
我有一个字典 dict_year 是这样的, 现在想把这个字典转成dataframe,用这个命令就可以 df_star = pd.DataFrame(dict_year).T 转换后得到结果如下图:
- 字典转换成模型属性代码笔记
创建一个字典的Category:NSDictionary+Property - (void)getPropertyCodeFromDict {NSMutableString *codes = [NSM ...
- python字典进行大写转化_Python字典转换成小写?
基本上比较一个小写版本的响应与小写版本的正确答案.在 但有几件事在你的问题中并不完全清楚: 你到底在records中存储了什么? 确认书中应使用哪个国家的名称是...在-'里? 您想将用户的响应与有效 ...
- python 序列化压缩成字符串_Python 将json序列化后的字符串转换成字典(推荐)
一般而言下面的就可以完成需求了. def convertToDic(data): jsonDic=json.loads(data) return dict(jsonDic) 但实际应用中可能会出现一些 ...
- python将列表转换成集合_python集合变成列表
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 可以存储任意数据类型的集合列表里:可以存储不同的数据类型 s= print s, ...
- python文件写入字典格式输出_Python把对应格式的csv文件转换成字典类型存储脚本的方法...
该脚本是为了结合之前的编写的脚本,来实现数据的比对模块,实现数据的自动化!由于数据格式是定死的,该代码只做参考,有什么问题可以私信我! CSV的数据格式截图如下: readDataToDic.py源代 ...
- 编码字典类特征、使用sklearn的DictVectorizer方法将字典组成的列表转换成向量、详解及实战
编码字典类特征.使用sklearn的DictVectorizer方法将字典组成的列表转换成向量.详解及实战 sklearn.feature_extraction.DictVectorizer() 把字 ...
- python把字符串转化为字典_python 将字符串转换成字典dict的各种方式总结
1)利用eval可以将字典格式的字符串与字典户转 >>>mstr = '{"name":"yct","age":10}' ...
- python对象列表转换为字典_python实现class对象转换成json/字典的方法
本文实例讲述了python实现class对象转换成json字典的方法.分享给大家供大家参考,具体如下: # -*- encoding: UTF-8 -*- class Student: name = ...
- 把SQLAlchemy查询对象转换成字典/json使用(分开)
注:针对的是查询出来的是单条对象 多个对象的话可以使用for循环遍历查询出来的对象列表,也可以使用下面的方法 1.config.py文件 #!/usr/bin/env python #-*- codi ...
最新文章
- android loadlibrary 更改libPath 路径,指定路径加载.so
- SSM-网站后台管理系统制作(2)---SSM基本工作原理
- onclick如何调用含参函数_在 golang 中如何调用私有函数(绑定隐藏的标识符)
- ImportError: cannot import name HTTPSHandler
- springmvcdate类型接收不到_无线电小课堂:如何在市区环境有效接收短波信号,选什么天线?...
- webpack编译时No PostCSS Config的解决方法
- python保存图片_python保存网络图片问题
- cas单点登陆系统-casServer搭建
- dense sift matlab,一个 Dense SIFT 算法的 matlab 实现 | 学步园
- java 死锁_java死锁分析
- 力扣——315. 计算右侧小于当前元素的个数
- HTML示例04---文字
- 【重点】剑指offer——面试题36:数组中的逆序对
- 浙商证券计算机组成原理,中国海洋大学计算机组成原理期末模拟参考答案.doc...
- HTML+JS 写一个 个人博客(初学版)
- 21天学通JAVA-第7版 入门到精通完美高清PDFamp;光盘源代码下载
- 简单循迹小车实验心得_你真的了解循迹小车吗,小宇教你如何制作属于自己的循迹小车...
- md5 java_JAVA使用MD5加密解密
- C/C++:个人收支系统实现
- 软考高级 真题 2011年上半年 信息系统项目管理师 案例分析
热门文章
- Matlab中的逻辑运算与,||与|的区别
- Python进阶(九)常用高级函数Counter、defaultdict、nametuple、map、reduce、filter、groupby
- 约束最优化方法 (三) 外部罚函数法
- 你不可不知的Java引用类型之——ReferenceQueue源码详解
- 使用docker部署.net core应用
- OAuth2.0学习(1-12)开源的OAuth2.0项目和比较
- ionic platform add ios, Error:spawn EACCES
- BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
- OSG 初始化为非全屏窗口
- XML To Linq 读取Sharepoint列表中的附件列信息