代码如下:
DataTable.Select(" name like  '/////%/10000//////////////////////' " )报错信息为:
Like 运算符中出错: 字符串模式“/////%/10000//////////////////////”无效。请大家指点下。

解决方案 »

  1.   

    啥啊这是http://q.cnblogs.com/q/37022/
      

  2.   


    sqlserver能通过 就是asp.net里,报错啊。
      

  3.   

    DataTable.Select的模糊查询有很大限制,%只能出现在开头或结尾位置。
    可以考虑改用Linq to object.
      

  4.   


    能否写个linq to object 的例子?
      

  5.   

    DataTable dt = new DataTable();
    dt.Columns.Add("ID", typeof(string));
    dt.Columns.Add("书名", typeof(string));
    dt.Rows.Add("10001", "C#程序设计语言");
    dt.Rows.Add("10002", "c#面向对象程序设计");
    dt.Rows.Add("10003", "多媒体技术");
    dt.Rows.Add("10004", "C#面向对象编程");
    DataRow[] rows = dt.Rows.Cast<DataRow>().Where(row => Regex.IsMatch(row["书名"].ToString(), @"(?i)C#.+?对象")).ToArray();
    foreach (DataRow row in rows)
    Response.Write(row["书名"].ToString() + "<br/>");
    用Linq+正则,这个正则相当于"C#%对象%".
    输出:
    c#面向对象程序设计
    C#面向对象编程
      

  6.   


    谢谢你的讲解。
    假如我想匹配下面的效果,请问该怎么实现?
    DataTable.Select(" name like '/////%/[100000,100001,100005]//////////////////////' " )'/////%/100000//////////////////////'
    '/////%/100001//////////////////////'
    '/////%/100005//////////////////////'这3种情况都是我需要的
      

  7.   

    DataRow[] rows = dt.Rows.Cast<DataRow>().Where(row => Regex.IsMatch(row["字段名"].ToString(), @"(?i)/////.*?/10000[015]//////////////////////")).ToArray();
      

  8.   

    DataRow[] rows = dt.Rows.Cast<DataRow>().Where(row => Regex.IsMatch(row["字段名"].ToString(), @"(?i)/////.*?/(?:100000|100001|100005)//////////////////////")).ToArray();
      

  9.   

    你自己去 看 MSDN Table 的Select 方法。