SqlLikeAttribute 特性增加 左、右Like实现
SqlLikeAttribute 特性原来只实现了全Like,今天增加左、右Like实现
更新时间:2016-04-30
/// <summary> /// 获取查询条件语句 /// </summary> /// <typeparam name="SearchT">查询实体类型</typeparam> /// <param name="searchEntity">查询实体</param> /// <param name="sqlParameters">参数列表</param> /// <param name="WhereSql">条件语句</param> /// <param name="item">属性对象</param> private static void GetQueryWhere<SearchT>(SearchT searchEntity, List<MySqlParameter> sqlParameters, StringBuilder WhereSql, PropertyInfo property) { //验证值是否有效 if (WhereValueValidate<SearchT>(searchEntity, property)) { var sqlLikeAttr = property.GetCustomAttribute(typeof(SqlLikeAttribute)); if (sqlLikeAttr != null) { var columnName = GetColumnName(property); var proprtyValue = filterLikeRiskStr(property.GetValue(searchEntity)); if (!string.IsNullOrEmpty(proprtyValue)) { //获取特性值 var sqlLikeVal = (sqlLikeAttr as SqlLikeAttribute).Value; switch (sqlLikeVal) { case SqlLikeType.LikeAll: WhereSql.AppendFormat(" AND {0} Like '%{1}%'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue); break; case SqlLikeType.LikeLeft: WhereSql.AppendFormat(" AND {0} Like '%{1}'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue); break; case SqlLikeType.LikeRight: WhereSql.AppendFormat(" AND {0} Like '{1}%'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue); break; default: WhereSql.AppendFormat(" AND {0} Like '%{1}%'", !string.IsNullOrEmpty(columnName) ? columnName : property.Name, proprtyValue); break; } } } else if (property.GetCustomAttribute(typeof(GreaterAndEqualAttribute)) != null) { var columnName = GetColumnName(property); if (!string.IsNullOrEmpty(columnName)) { var parameterName = string.Format("@{0}", property.Name); WhereSql.AppendFormat(" AND {0} >= {1}", columnName, parameterName); sqlParameters.Add(new MySqlParameter(parameterName, property.GetValue(searchEntity))); } } else if (property.GetCustomAttribute(typeof(LessAndEqualAttribute)) != null) { var columnName = GetColumnName(property); if (!string.IsNullOrEmpty(columnName)) { var parameterName = string.Format("@{0}", property.Name); var value = property.GetValue(searchEntity); if (value.GetType().Name.Equals("DateTime")) { WhereSql.AppendFormat(" AND {0} < {1}", columnName, parameterName); sqlParameters.Add(new MySqlParameter(parameterName, Convert.ToDateTime(value).AddDays(1))); } else { WhereSql.AppendFormat(" AND {0} <= {1}", columnName, parameterName); sqlParameters.Add(new MySqlParameter(parameterName, value)); } } } else { //新方法灵活性高 var columnName = GetColumnName(property); if (!string.IsNullOrEmpty(columnName)) { var parameterName = string.Format("@{0}", property.Name); WhereSql.AppendFormat(" AND {0} = {1}", columnName, parameterName); sqlParameters.Add(new MySqlParameter(parameterName, property.GetValue(searchEntity))); } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具