使用 DataTable.Select
功能 数字模糊查询方案1 CAST(colname as varchar) 不好用
方案2 CONVERT ( varchar  , colname  ) 不好用
方案3 比较大小还没想好咋比较
方案4 不知道

解决方案 »

  1.   

    Select(String)按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 DataRow 对象的数组。 
    Select(String, String)获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组。 Select(String, String, DataViewRowState)获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。
      

  2.   

    数据表 tab1
    包含列 code(主键),a(int),b(varchar) 想用 DataTable.Select来查询a中含有123的数据
      

  3.   

    数字模糊查找,你还是在数据库里转成string之后,
    然后 DataTable.Select("colName like %"+value);
      

  4.   

    1 我写了个过滤窗体(模糊查询功能),这个窗体随便拷贝到哪都能用。
    2 窗体需要个参数DataGridView(过滤DataGridView非隐藏的列)
    3 现在出现个问题DataGridView的数据源DataTable可能含有数字类型的列(Int)
    4 DataTable.Select(Like) 不支持转换字符串函数,Like也不能对数字操作
      

  5.   

     DataTable dt = new DataTable("dt");
                dt.Columns.Add("a");
                dt.Columns.Add("b");
                //dt.Columns.Add("c");
                dt.Rows.Add(0,"col2");
                dt.Rows.Add(1,"col2");
                dt.Rows.Add(21233,"col2");
                dt.Rows.Add(300123,"col2");
                dt.Rows.Add(412353,"col2");
                dt.Rows.Add(12331,"col2");
                List<DataRow> rl = new List<DataRow>();
                foreach (DataRow item in dt.Rows) {
                    if (Regex.Match(item["a"].ToString(),@"^\d*123\d*$").Success) {
                        rl.Add(item);
                    }                
                }
                foreach (var item in rl) {
                    Console.WriteLine(item["a"]);
                }
                Console.Read();
      

  6.   

    恩 谢谢
    能达到我要的效果,但是数据量大
    dt.Columns.Add("b"); 
    dt.Rows.Add(0,"col2"); 
    导致速度慢了些
      

  7.   

    参数中的语法与SQL语法差不多的
      

  8.   

    转型成string后再进DataTable.Select