首页 新闻 会员 周边

如何处理多条件组合查询

0
悬赏园豆:30 [已解决问题] 解决于 2012-04-17 17:52

当遇到多条件自由组合查询时怎么对SQL语句进行处理呢?总不能一个一个的进行判断吧,具体的就像相亲网站的搜索那样,怎么实现呢?

松竹柏柳的主页 松竹柏柳 | 初学一级 | 园豆:38
提问于:2012-04-16 15:35
< >
分享
最佳答案
2

白云天的方法最简单,只是不好看而已,也是大多数时候选用的方式,举一个简单例子。

 List<string> listWhere = new List<string>();
            List<SqlParameter> listParameters = new List<SqlParameter>();
            if (cbName.Checked)
            {
                listWhere.Add("Name like @name");
                listParameters.Add(new SqlParameter("name","%"+txtQueryName.Text+"%"));
            }
            if (cbMobile.Checked)
            {
                listWhere.Add("MobilePhone like @mobile");
                listParameters.Add(new SqlParameter("mobile", "%" + txtQueryMobile.Text + "%"));
            }
           string sql = "select * from T_Customers\n";
            
            if (listWhere.Count > 0)
            {
                string sqlWhere = string.Join(" and ", listWhere.ToArray());
                sql =sql+" where "+sqlWhere;
            }
            dataGridView1.DataSource = SqlHelper.ExecuteDataTable(sql, listParameters.ToArray());
收获园豆:6
Halower | 小虾三级 |园豆:1723 | 2012-04-17 01:02
其他回答(8)
1

那就是一個一個判斷。拼接sql語句哦。複雜的都應該是拼接的 哦、

收获园豆:2
無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-16 15:43
2

如果你ORM层是自己拼接字符串的,那么就只能拼字符串。如果你ORM层是用LINQ TO SQL, EF一类的,那么可以动态构建表达式树去查询。

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-04-16 16:10
0

像那些应该都是拼接SQL字符串的吧?关注...

收获园豆:2
轻狂の书生 | 园豆:1042 (小虾三级) | 2012-04-16 16:23
0

应该都是拼接的

收获园豆:2
xiufang1989 | 园豆:280 (菜鸟二级) | 2012-04-16 17:23
0

SQL查询条件常用的就是通过判断拼接SQL语句,好像还没有发现其它的方法:

wherestr1="where 1=1 ";

if(wherestr1!=""){ strsql+="and colname1='colvalue1'";  }

if(wherestr2!=""){ strsql+="and colname2='colvalue2'";  }

同样期待有更好的解决方法。。。

收获园豆:8
KivenRo | 园豆:1734 (小虾三级) | 2012-04-16 17:33
0

按条件判断,拼接sql会是一个不错的方法

收获园豆:5
--宁静以致远-- | 园豆:364 (菜鸟二级) | 2012-04-16 17:35
0

如果用Entity Framework,用LINQ进行查询条件的拼接很方便。

收获园豆:3
dudu | 园豆:30994 (高人七级) | 2012-04-17 09:50
0

LINQ~

收获园豆:2
Philomena | 园豆:154 (初学一级) | 2012-04-17 11:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册