一、用类封装用于拼接的where条件语句(三层实现多条件搜索)
(一) 思想:
多条件搜索时拼接where条件语句,以前是在查询方法中用List<string>和List<SqlParameter>分别存储where条件语句和查询参数,这样做确实很好的解决了多条件查询的问题,但where条件语句和查询参数的集合一旦需要修改,必须进入查询方法修改源代码,不利于程序的扩展。
在此,用Condition类将where条件语句封装起来,需要增加查询条件时,只需实例化一个新的Condition对象,无须修改查询方法。在DAL层中还是要用到List<string>和List<SqlParameter>集合。
(二)具体代码:
1、Condition类:
///<summary>
///拼接where语句的条件有共性:列名、条件比较符、比较值,可以用Condition类封装
///</summary>
public class Condition
{
///<summary>
///属性名或者数据库中的列名
///</summary>
public string PropertyName
{
get;
set;
}
//属性对应的值
public object Value
{
get;
set;
}
public Operator Operation
{
get;
set;
}
}
public enum Operator
{
Equal,
NotEqual,
GreaterThan,
LessThan,
Like
}
2、UI层实例化Condition对象,并加入List<Condition>集合
private void btnSearch_Click(object sender, EventArgs e)
{
List<Condition> listWhere = new List<Condition>();
if (txtName.Text.Trim().Length>0)
{
Condition condition = new Condition();
condition.PropertyName = "BookName";
condition.Value = txtName.Text.Trim();
condition.Operation = Operator.Like;
listWhere.Add(condition);
}
if