各位大虾~~ 小弟遇到一个问题怎么找都没找到,实在是没办法了。
   小弟有一个DataTable对象,现在需要对DataTable对象进行数据模糊过滤,通常的做法是 DataTable.Select("字段 Like '%模糊值%'") 但是小弟这个问题有点特殊
   大家都知道 Like 里面的 % 是模糊匹配的意思,而小弟现在过滤条件不是一个固定的值而是 一个过滤条件 前后中间都要模糊
则写出来的语法 按照通常是 DataTable.Select("字段 Like '%模%值%'") 可是这样写的话语法就错了  小弟搜索了一个多小时还是没有找到正确的方法,所以希望各位大虾帮帮忙~~!!! 在线等  100分送

解决方案 »

  1.   

    先把表转换为dataview
    然后再用dv.RowFilter="商品名称 LIKE'%模糊值%'"过滤
      

  2.   


    Membership Service(可以翻译成 成员 服务)
    作用:Manages users and credentials ,两种使用方式1、Declarative access via WS Admin Tool (所谓Declarative方式意思为点点鼠标就可以完成操作)
    2、Programmatic access via Membership API 
    Simplifies forms authentication 
    1、Provides logic for validating user names and passwords, creating users, and more 
    2、Manages data store for credentials, e-mail addresses, and other membership data Provider-based for flexible data storage ,即基于提供者的数据存储方式,这点很重要,可以针对不同数据库提供一个Provider,这样灵活性就比较好了。缺省提供了SqlMembershipProvider,支持将用户数据存储在Sql server中。运行Aspnet_regsql.exe可在SQL Server中建立相关的Table。有两个主要的类:Membership和MembershipUser,用户界面这一端支持Login/LoginView/LoginStatus等控件。Roles Management Service(角色)
      
    Role-based security in a box 
    1、Declarative access via WS Admin Tool 
    2、Programmatic access via Roles API Simplifies adding role-based security to sites that employ forms authentication 
    1、Maps users to roles on each request 
    2、Provides data store for role information Provider-based for flexible data storage,和Membership一样,通过提供者对数据库进行访问,缺省的提供者为SqlRoleProvider主要的类为RolesProfile Service(可以翻译成 配置服务)Stores per-user data persistently 
    1、Strongly typed (unlike session state) 
    2、On-demand lookup (unlike session state) 
    3、Long-lived (unlike session state) 
    4、Supports authenticated and anonymous users Accessed through dynamically compiled ProfileBase derivatives Provider-based for flexible data storage
      

  3.   

    装换成DataView对象在用 RowFilter 我已经试过了  回复一楼的大虾
    二楼的大虾能不能说的明白点, 小弟之前也考虑过 如果用户用到了中间模糊匹配的话 就拆分SQL条件,可惜小弟现在心已乱。想不出来好的拆分方法
      

  4.   

    在SQLServer的SQL里面是支持 Like '%模%糊%'的如果DataTable不支持,可以用笨办法试着自己循环一遍,也比较好找,我觉得就算交给DataTable,它也得循环
      

  5.   

    但是如果自己循环的话 那样效率就很低了
    DataTable对象本身是如何做的 我没有深思,不过 楼上的兄弟你给了我一点思路,我可以看看微软是怎么做的
    谢谢咯
      

  6.   

    楼主兄犯了个很严重的错误啊:本身"Like '%模%值%'"和"Like '%模值%'"这两个格式返回的值是完全一致的啊,所以你完全没有必要中间加个"%",有点画蛇添足的味道了。因为"%"匹配0个或者多个啊。给我分吧
      

  7.   

    还是遍历找吧,用正则表达式来匹配就可以了,反正在table中也是要循环匹配的。
      

  8.   

    在SQLServer的SQL里面是支持 Like '%模%糊%'的 如果DataTable不支持,可以用笨办法试着自己循环一遍,也比较好找,我觉得就算交给DataTable,它也得循环
      

  9.   


    如果这样呢select * from 表名 where 字段 like %模% and 字段 like %糊%  
    只是这样想,没试过,不知道可不可以,呵呵,跟着大家学习。
      

  10.   

    帮 LZ 
    顶下吧!帮 LZ 
    顶下吧!帮 LZ 
    顶下吧!帮 LZ 
    顶下吧!
      

  11.   

    DataTable.Select("字段 Like '%模糊值%'") 试过了不会报语法错啊要不like用全小写的试试
      

  12.   

    DataTable.Select("字段 Like '%模%值%'")是指查出的数据又要有'模'这个字符 又要有'值'这个字符?第一步筛选 DataTable.DeafultView.RowFilter = "字段 Like '%模%'
    第二步筛选 DataTable.DeafultView.RowFilter = "字段 Like '%值%'
      

  13.   

    DataTable.Select("字段 Like '%模%值%'") 下面的代码就是对 "模%值" 的模糊查询 ,你看看能不能转化为你用的,主要是关键字escape 后面的符号
    select * from q where code like '%模!%值%' escape '!'