欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net中的多条件查询 hashtable

程序员文章站 2023-02-28 13:10:14
 无论是B/S还是C/S,在做查询时都有很多的条件,那就是一个多条件的查询,网上很多的多条件查询都是用大量的if和else,那样不仅是代码繁杂,而且阅读起来很是不便,特别...
 无论是B/S还是C/S,在做查询时都有很多的条件,那就是一个多条件的查询,网上很多的多条件查询都是用大量的if和else,那样不仅是代码繁杂,而且阅读起来很是不便,特别是当条件越多的时候(用到10个以上),我想。那些if和else就是拦路虎了,用不好,影响了整个程序的运行......

   现为大家介绍一种用HashTable做的多条件查询,大家都知道.HashTable是包含键值对的,我们何不把要查询的条件用HashTable来封装了?然后再来遍历HashTable,不就可以了吗?有人会说,你怎么知道别人的查询条件是输入了几个了?很简单啊,因为HashTable的一个特性就是不能放入空值,,当有空值时就不用放入HashTable了,这样HashTable里面放的都是输入的要查询的条件!把HashTable的健值用来作为查询的条件就OK了!!!

 

 

[csharp] 

/// <summary>  

  /// 根据条件哈希表,构造SQL语句中的AND条件子句  

  /// </summary>  

  /// <param name="conditionHash">条件哈希表</param>  

  /// <returns>AND关系条件子句</returns>  

        public static String GetConditionClause(Hashtable queryItems)  

        {  

  

            int Count = 0;  

            String Where = "";  

  

            //根据哈希表,循环生成条件子句  

            foreach (DictionaryEntry item in queryItems)  

            {  

                if (Count == 0)  

                    Where = " Where ";  

                else  

                    Where += " And ";  

  

                //根据查询列的数据类型,决定是否加单引号  

                if (item.Value.GetType().ToString() == "System.String" || item.Value.GetType().ToString() == "System.DateTime")  

                {  

                    Where += item.Key.ToString()  

                        + " Like "  

                        + SqlStringConstructor.GetQuotedString("%"  

                        + item.Value.ToString()  

                        + "%");  

                }  

                else  

                {  

                    Where += item.Key.ToString() + "= " + item.Value.ToString();  

                }  

                Count++;  

            }  

            return Where;  

        }