0

我正在使用两种类型的代码来过滤数据表中的记录。但是一种有效,另一种无效。

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

我只需要数据行数组。

我对这两种方法使用相同的过滤器值。请帮我解决这个问题。

4

4 回答 4

0

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

var SRows = ds_pack.Tables[0].Select()
                 .Where(dr => dr["FLD_PARENT_ID"].ToString()== Pack["FLD_ID"] 
                              && dr["FLD_TYPE"].ToString()=="1")
于 2013-05-28T12:56:01.813 回答
0

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

由于您需要 DataRow 数组,您应该使用DataTable.Select方法。

于 2013-05-28T13:13:49.400 回答
0

尝试这个

var filter = "[FLD_PARENT_ID] = " + Pack["FLD_ID"] + " AND [FLD_TYPE]=1";
于 2013-05-28T12:57:08.723 回答
0

试试这个代码。

 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);
于 2013-05-28T13:01:20.143 回答