如何从C#中过滤的dataview值中获取值?

时间:2013-12-26 08:24:21

标签: c# c#-4.0 datatable dataview

我有一个过滤后的数据视图,我必须从中提取值。问题是,当我这样做时,我也从非过滤数据中获取值。

dv1.RowFilter = "collegeno=" +i; 
for(int k=1;k<dv1.count;k++)  
 {  
   //inserting data in database; there is column in database table; I am inserting into it;
 dv1.Table.Rows[k]["roomno"]);

 }

对于前:总数没有。 DataView中的行是200;
i=1我有30条记录时;
如果我提供k=4,那么我应从此30条记录中获得第四行 但我得到200记录的第4行..

3 个答案:

答案 0 :(得分:3)

您编写的代码是使用代码块dv1.Table访问主表。

而是尝试这个

dv1[k]["roomno"]

此代码适用于DataView,适用过滤器。

如果您使用DataView.Table,则会访问未过滤的结果。

参考链接:MSDN - DataView.RowFilter

答案 1 :(得分:2)

  

如果我提供k = 4,那么我应该从这30条记录中得到第四行。   但是我得到了200条记录中的第4行......

那是因为你在查询表而不是视图。相反,你应该这样做:

dv1.RowFilter = "collegeno=" +i; 
object value = dv1[k]["roomno"];

根据您的需要,您可能希望使用DataTable.Select方法而不是DataView

var rows = table.Select("collegeno=" +i);
object value = rows[k]["roomno"];

答案 2 :(得分:0)

DataTable dt = dv.ToTable();     
     for(int k=1;k<dt.Rows.Count;k++)  
     {  
        dt.Rows[k]["roomno"];
       //dv1.Table.Rows[k]["roomno"]);

     }