使用c#在datatable中选择语句?

时间:2011-11-26 11:45:06

标签: c# asp.net

在asp.net中,我试图过滤数据表中的数据,因为我编写了选择状态并在另一个表中添加了行,但它没有添加。这是我的代码:

DataTable dtnew = new DataTable();
DataTable dt = (DataTable)XMLSerializerBL.Deserialize(xDocTable.OuterXml, XMLSerializerBL.OutputType.DataTable);
//grdsap.DataSource = dt;
//grdsap.DataBind();
string expression = "VKGRP='001'";
DataRow[] rows = dt.Select(expression);

foreach (DataRow thisrow in rows)
{
    //dtnew.Rows.Add(thisrow);+
    //dtnew.ImportRow(thisrow);  
    dtnew.Rows.Add(thisrow.ItemArray);
}
grdmy.DataSource = dtnew;
grdmy.DataBind();

2 个答案:

答案 0 :(得分:1)

这两个DataTable对象必须具有相似的列集合。

我认为dt有两列。

dtnew = new DataTable();
dtnew.Columns.Add("Col1");
dtnew.Columns.Add("Col2");

foreach (DataRow thisrow in rows)
  {
   dtnew.Rows.Add(thisrow[0],thisrow[1]);
  }

您可以使用dt.DefaultView.RowFilter过滤结果。

dt.DefaultView.RowFilter="VKGRP='001'";
grdmy.DataSource = dt;
grdmy.DataBind();

答案 1 :(得分:1)

如果您只想过滤,请使用DataView

DataTable dtnew = new DataTable();
DataTable dt = (DataTable)XMLSerializerBL.Deserialize(xDocTable.OuterXml, XMLSerializerBL.OutputType.DataTable);
DataView dvData = new DataView(dtData);
dvData.RowFilter = "VKGRP='001'";

grdmy.DataSource = dvData;
grdmy.DataBind();