我用DataSet.Table(0).select("id>20")筛选数据,哪执行此语句后:1)DataSet.Table(0)中是不是只剩符合条件的数据了呢,也就是说其它数据还在吗?2)如果其它数据还在的话,我该如何操作筛选出来的数据呢?比如逐行操作,记录总数等的情况。3)如果其它数据不在了的话,除了从新读取数据库外还有其它高效的办法恢复吗?
谢谢前辈们指点!!

解决方案 »

  1.   

    DataTable的筛选要用 DefaultView
    DefaultView.RowFilter(CompanyName < 3)   就是筛选CompanyName字段大于3的..
    DataSet.Table[0].DefaultView.RowFilter(CompanyName < 3)  这时表里的就是筛选过后的记录,,表中的其它记录可能是隐藏了,,不太清楚。。把DefaultView去掉后就是原来没有筛选的记录。。
      

  2.   

    可以使用DataView的RowFilter进行筛选数据
    DataView myDv=myDs.Tables[0];
    myDv.RowStateFilter=DataViewRowState.CurrentRows;
    myDv.RowFilter="id>20";
    筛选后数据并没有从DataSet中删除掉~~只是被打上了标签
    myDv.Table.Rows.Count;是原来的总记录数
    myDv.Table.Rows[0]["列名"].ToString();取第一行某列
      

  3.   

    DataView myDv=myDs.Tables[0].DefaultView;
      

  4.   

    DataSet.Table(0).select("id>20") 过滤出所有符合数据的 DataRow[]原来记录都还在!DataRow[] drs = DataSet.Table(0).select("id>20");
    foreach(DataRow dr in drs)
      // 遍历所有符合条件的行。
      

  5.   

    1、其他数据在视图中不在
    2、返回的是一个行集,你直接操作就可以了。
    3、其他数据仍然在DataSet中,你去掉Select就可以获取全部行集了。
      

  6.   

    用DataSet.Table(0).select("id>20")筛选数据对DataSet.Table(0)没有任何影响操作方法,楼上都说了