DataTable dt=getDataTable();dt.Select(" id in (select id from tbName)");如果我要 过滤DataTable ,里面实现 可以子查询这种,该怎么做呢?

解决方案 »

  1.   

    string filter = "id>1";
    DataRow[] rows = DataTable.Select(filter);
    或用dataview
    http://www.cnblogs.com/levin9/articles/841942.html
      

  2.   

     
    DataView dv = bllCommonMode.getModuleListByCache();
    dv.RowFilter = "isused=1 and  moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")";
    这里过滤条件
    isused=1 and  moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")
    中的
    moduleid in (select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + ")
    到这里会报错怎么解决
      

  3.   


    既然你是要实现DataTable的过滤,那么在过滤时所使用到的列,必须是当前DataTable结构中实际存在的,因此,你必须先得到:select moduleid from v_permission where opeid=" + bllOPE.CurrentUsr.OpeID + " 这个ID列表,然后再代入过滤条件中。[另外,有可能isused=1你要写成isused='1',我好像记得我在使用的时候发现过,会失去对数据类型的定义,将全部变成字符串类型的]
    详细的你可以查一下:DataTable.Select()的用法