为什么RowFilter不能在c#中正常工作?

本文关键字:工作 常工作 不能 RowFilter 为什么 | 更新日期: 2023-09-27 18:15:47

我使用下面两种类型的代码从数据表中过滤记录。但只有一个在工作,另一个没有。

var filter = "FLD_PARENT_ID = " + Pack["FLD_ID"] + " AND FLD_TYPE=1";
DataView dv = ds_pack.Tables[0].DefaultView;
dv.RowFilter = filter ; //This is filtering a row 
DataRow[] SRows = ds_pack.Tables[0].Select(filter); //But this type not return a row

我只需要DataRow数组

为两个方法使用相同的筛选值。请帮我解决这个问题

为什么RowFilter不能在c#中正常工作?

try this

var filter = "[FLD_PARENT_ID] = " + Pack["FLD_ID"] + " AND [FLD_TYPE]=1";

试试这段代码。

 DataRow[] drs = ds_pack.Tables[0].Select("FLD_PARENT_ID = " + Pack["FLD_ID"].ToString() + " AND FLD_TYPE=1");

 DataTable dtpacks = ds_pack.Tables[0];
 var filter = "FLD_PARENT_ID = " + Pack["FLD_ID"].ToString() + " AND FLD_TYPE=1";
 DataRow[] drs = dtpacks.Select(filter);

不是关于过滤器,而是Linq替代

var SRows = ds_pack.Tables[0].Select()
                 .Where(dr => dr["FLD_PARENT_ID"].ToString()== Pack["FLD_ID"] 
                              && dr["FLD_TYPE"].ToString()=="1")

当您对DataView的RowFilter属性应用过滤器时,您将获得过滤的结果,并且它也将反映到原始数据表中。更多信息在这里

因为需要DataRow Array,所以应该使用DataTable。选择方法。