好像是QQ里根据条件来查询在线会员的例子.有很多选择的条件, 可以根据你选择省份,城市,性别, 年龄来搜索符合条件的好友, 这个条件的数目的随机的, 当时有个牛人只用一条很简洁的语句就实现了  SELECT后面跟着一堆的IF, 我忘怎么写了. 那位老大帮我想想啊.

解决方案 »

  1.   


    //方式1:ADO.NET
    public string Test(string a, string b, string c,string d)   
       {   
           string sql = "SELECT * FROM Users WHERE 1=1";   
           if (!string.IsNullOrEmpty(a))   
           {   
               sql += " AND name='" + a + "'";   
           }   
           if (!string.IsNullOrEmpty(b))   
           {   
               sql += " AND age='" + b+ "'";   
           }   
           if (!string.IsNullOrEmpty(c))   
           {   
               sql += " AND sex='" + c + "'";   
           }   
           if (!string.IsNullOrEmpty(d))   
           {   
               sql += " AND address='" + d + "'";   
           }   
           return sql.ToString();   
       }  
         public string Test(string a, string b, string c,string d)
            {
                string sql = "SELECT * FROM Users WHERE 1=1";
                if (!string.IsNullOrEmpty(a))
                {
                    sql += " AND name='" + a + "'";
                }
                if (!string.IsNullOrEmpty(b))
                {
                    sql += " AND age='" + b+ "'";
                }
                if (!string.IsNullOrEmpty(c))
                {
                    sql += " AND sex='" + c + "'";
                }
                if (!string.IsNullOrEmpty(d))
                {
                    sql += " AND address='" + d + "'";
                }
                return sql.ToString();
            } //方式2:linqpublic void Test(string a, string b, string c,string d)   
           {   
               QueryContext query = new QueryContext();   
               var q = from u in query.Users   
                        select u;   
               if (!string.IsNullOrEmpty(a))   
               {   
                   q = q.Where(p => p.name == a);   
               }   
               if (!string.IsNullOrEmpty(b))   
               {   
                   q = q.Where(p => p.age == b);   
               }   
               if (!string.IsNullOrEmpty(c))   
               {   
                   q = q.Where(p => p.sex == c);   
               }   
               if (!string.IsNullOrEmpty(d))   
               {   
                   q = q.Where(p => p.address == d);   
               }   
      
               q.ToList();  //上边的所有if,只有到此处才会执行   
           }  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/q107770540/archive/2010/07/09/5724013.aspx
      

  2.   

    SELECT * FROM QQTable
    WHERE IsOnLine=1
    AND ((@Name IS NULL) OR ([Name] LIKE @Name))
    AND ((@City IS NULL) OR ([City]=@City ))
    AND .......
      

  3.   

    select * from QQTable 
    where IsOnline=1 
    and isnull(@Name,QQTable.Name)
    and isnull(@City,QQTable.City)
    and isnull(@Age,QQTable.Age)
    更多的自己加上去