private void ConvertKeyValueObj(KeyValueObj item) { if (item == null) { return; } if (item.IsList && _filterType != FilterType.In) { throw new Exception("In-filter type is required when a object value is a collection"); } if (item.IsList && item.FieldType == FieldType.String) { List <string> objList = item.Value as List <string>; item.Value = objList.Select(g => g = string.Format("'{0}'", g)).ToList(); } }
private string GetWhereItemStr(KeyValueObj item) { StringBuilder sBuilder = new StringBuilder(); switch (_filterType) { case FilterType.And: sBuilder.Append(string.Format(" and {2}{0}=@{1} ", item.Key, item.Key, item.TbAsName)); FileSqlDic(string.Format("@{0}", item.Key), item.Value); break; case FilterType.Or: sBuilder.Append(string.Format(" or {2}{0}=@{1} ", item.Key, item.Key, item.TbAsName)); FileSqlDic(string.Format("@{0}", item.Key), item.Value); break; case FilterType.In: if (item.IsList) { if (item.FieldType == FieldType.String) { sBuilder.Append(string.Format(" and {2}{0} in ({1}) ", item.Key, string.Join(",", (List <string>)item.Value), item.TbAsName)); } else if (item.FieldType == FieldType.Int) { sBuilder.Append(string.Format(" and {2}{0} in ({1}) ", item.Key, string.Join(",", (List <int>)item.Value), item.TbAsName)); } } else { sBuilder.Append(string.Format(" and {2}{0}=@{1} ", item.Key, item.Key, item.TbAsName)); FileSqlDic(string.Format("@{0}", item.Key), item.Value); } break; case FilterType.Like: sBuilder.Append(string.Format(" and {2}{0} like '%{1}%' ", item.Key, item.Value.ToString(), item.TbAsName)); break; case FilterType.Neq: sBuilder.Append(string.Format(" and {2}{0} <> @{1} ", item.Key, item.Key, item.TbAsName)); FileSqlDic(string.Format("@{0}", item.Key), item.Value); break; case FilterType.Between: if (item.FieldType == FieldType.Date) { sBuilder.Append(string.Format(" and {2}{0} between {1} ", item.Key, string.Format("'{0}' and '{1}'", Convert.ToDateTime(item.Value).ToShortDateString(), Convert.ToDateTime(item.Value).AddDays(1).ToShortDateString()), item.TbAsName)); } else { sBuilder.Append(string.Format(" and {2}{0}=@{1} ", item.Key, item.Key, item.TbAsName)); FileSqlDic(string.Format("@{0}", item.Key), item.Value); } break; default: break; } return(sBuilder.ToString()); }