在开发中难免会遇到多条件查询,那么在做多条件查询的时候,无可厚非肯定会出现判断是否为空的操作,如果五个条件组合判断的话用数组来组合不下25种,那么这时候我们就要换一个思维,利用字符串拼接;
这种条件众多会导致有许多判断条件,这时候就利用:
var siteId = context.Request["siteId"];
var phone = context.Request["phone"];
var qqNumber = context.Request["qqNumber"];
var wechat = context.Request["wechat"];
string code;
string msg;
string sql = "select 管理员基本信息表.*,分站配置中心.SubstationName from 管理员基本信息表 left join 分站配置中心 on 管理员基本信息表.siteId = 分站配置中心.SubstationId where 1=1";
if (!string.IsNullOrEmpty(siteId))
{
sql += " and siteId='"+siteId+"'";
}
if (!string.IsNullOrEmpty(phone))
{
sql += " and sitePhone = '"+ phone + "'";
}
if (!string.IsNullOrEmpty(qqNumber))
{
sql += " and qq = '"+ qqNumber + "'";
}
if (!string.IsNullOrEmpty(wechat))
{
sql += " and wechat = '"+ wechat + "'";
}
DataTable dt = dbUtil.GetDataSet(sql);
for (int i = 0; i < dt.Rows.Count; i++) {
siteInfos.Add(new siteInfo()
{
siteId = dt.Rows[i]["siteId"].ToString(),
siteUserName = dt.Rows[i]["siteUserName"].ToString(),
sitePhone = dt.Rows[i]["sitePhone"].ToString(),
wechat = dt.Rows[i]["wechat"].ToString(),
siteBalance = float.Parse(dt.Rows[i]["siteBalance"].ToString()),
SubstationName = dt.Rows[i]["SubstationName"].ToString(),
siteStatue = dt.Rows[i]["siteStatue"].ToString(),
registerTime = dt.Rows[i]["registerTime"].ToString(),
lastTime = dt.Rows[i]["lastTime"].ToString(),
siteRole = dt.Rows[i]["siteRole"].ToString(),
qq = dt.Rows[i]["qq"].ToString(),
});
}
var data = new { code = 200, msg = "查询成功", data = siteInfos };
JavaScriptSerializer json = new JavaScriptSerializer();
var res = json.Serialize(data);
context.Response.Write(res);
}
public class siteInfo
{
public string siteId { get; set; }
public string siteUserName { get; set; }
public string sitePhone { get; set; }
public string wechat { get; set; }
public float siteBalance { get; set; }
public string SubstationName { get; set; }
public string siteStatue { get; set; }
public string registerTime { get; set; }
public string lastTime { get; set; }
public string siteRole { get; set; }
public string qq { get; set; }
}
这种数据拼接的方式,不为空的时候拼接上去,就不需要利用组合来判断,大大缩短开发复杂程度;
值得注意的是其中的where 1=1这是一个条件,无论它和谁拼接都不会影响结果!