HashTable与多条件筛选

本文介绍了在数据筛选场景中,如何利用HashTable实现多条件过滤。当某些字段值为空时,不对此字段做限制。通过接收用户输入,使用HashTable组装查询语句,并通过字符串拼接确保空值字段能匹配所有项,最后执行数据库查询获取结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景描述:要使用多个字段的值,对结果数据记性筛选。当一些字段为空时,对该字段的筛选不限制。这里给出一种通用的做法。

  1. 使用HashTable作为关键字以及用户输入值的保存数据结构。
  2. 编写接口函数,接收该参数,组装Sql语句。
  3. 对关键字及其值,使用 like

Web页面的UI界面

当点击搜索按钮后,会进入下面的函数进行处理。

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        Hashtable ht = new Hashtable();
        string ComID = CompanyDDL.SelectedValue;
        string DepID = DepDDL.SelectedValue;
        string empName = Name.Text;
        string account = Account.Text;
        ht.Add("companyID", ComID);
        ht.Add("depID", DepID);
        ht.Add("empName", empName);
        ht.Add("empAccount", account);
        EmployerDB empDb = new EmployerDB();
        DataTable dt = empDb.getEmpByHashTable(ht);
        EmpList.DataSource = dt;
        EmpList.DataBind();
    }

然后,让我看一下empDb.getEmpByHashTable(ht)是如何处理的。

public DataTable getEmpByHashTable(Hashtable ht)
    {
        string sql = "select * from Employer where Status=1 ";
       foreach(string key in ht.Keys)
        {
            sql +=" and "+ key.ToString() + " like '" + [key] + "%'";
        }
        return SelectTable(sql);
    }

通过简单的字符串的拼接,就能得到想要的sql执行语句。

其中主要的点,就是用到了like这个关键字。原因说明,当用户输入的要查询字段为空时,这个字段对应的值就是 a like '%'的形式,这样显然会匹配所有的项。而不用考虑,字段值是否输入的问题。

接下来,就是把该语句执行到SqlServer数据库,返回结果table即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值