/// <summary> /// 获取自定义筛选的sql语句(只能用于GeDefinedList、GetDefinedCount) /// </summary> /// <param name="sqlType">数据库类型(只能用于GeDefinedList、GetDefinedCount)</param> /// <param name="paramObj">参数</param> /// <param name="pageNo">页码</param> /// <param name="pageSize">页大小</param> /// <param name="isLike">是否用like</param> /// <param name="filterStr">自定义筛选字段</param> /// <param name="orderStr">排序字符串</param> /// <returns>操作字符串</returns> public static String GetDefinedSqlStr <T>(SqlType sqlType, T paramObj = null, Int32 pageNo = -1, Int32 pageSize = -1, Boolean isLike = false, String filterStr = "", String orderStr = "") where T : class { var mType = GetType <T>(sqlType); var andStr = isLike ? "like" : "="; // 处理参数 var result = mData[mType.Key][sqlType]; if (paramObj != null) { // 取得实体的所有字段 Dictionary <String, Object> modelFields = JsonConvert.DeserializeObject <Dictionary <String, Object> >(JsonConvert.SerializeObject(paramObj)); foreach (KeyValuePair <String, Object> field in modelFields) { // 过滤空数据,bool类型,int类型,过滤时间(只支持字符串) if (field.Value == null) { continue; } var value = field.Value.ToString(); if (StringTool.IsDateTime(value)) { continue; } if (String.IsNullOrEmpty(value.Trim(' '))) { continue; } switch (value) { case "True": case "False": case "0": case "00000000-0000-0000-0000-000000000000": case "00:00:00": break; default: result += $" and `{field.Key}` " + andStr + (isLike ? $" '%{value}%'" : $" '{value}'"); break; } } } result += " " + filterStr + orderStr; // page参数添加 if (pageNo != -1 && pageSize != -1) { result += $" Limit {(pageNo - 1) * pageSize},{pageSize}"; } return(result + ";"); }