我有一个数据表,在某些条件下需要将一些行复制到新数据表。我的语句如下所示。
dt1 = ds1.Tables[0];
DataRow[] dRows = dt1.Select("IS_ALLOWED=" + false);
for (int i = 0; i < dRows.Length; i++)
{
dtPerm.Rows.Add(dRows[i]); //------(1)
//dtPerm.ImportRow(dRows[i]); //------(2)
}
但是从------(1)调试时。它跳起来抓住。
是个例外"This row already belongs to another table."
----(2)没有出现任何错误且Rows没有添加,但该行为空且只有一列。
有没有解决方案。
答案 0 :(得分:1)
将for
循环修改为以下内容:
foreach (DataRow row in dRows)
{
dtPerm.ImportRow(row);
}
在将行添加到DataTable
之前,请确保已使列存储行值。看到这段代码:
DataTable dtPerm = new DataTable();
dtPerm.Columns.Add("Column1");
dtPerm.Columns.Add("Column2");
dtPerm.Columns.Add("Column3");
dtPerm.Columns.Add("Column4");
dtPerm.Columns.Add("Column5");
在此之后,放置上面显示的for
循环,这将正常工作。
希望这有帮助。
答案 1 :(得分:0)
谢谢大家。我在循环开始上面添加了一条语句并修改了循环内的代码,现在它正常工作
dt1 = ds1.Tables[0];
dtPerm = dt1.Clone();
DataRow[] dRows = dt1.Select("IS_ALLOWED=" + false);
for (int i = 0; i < dRows.Length; i++)
{
dtPerm.ImportRow(dRows[i]); //------(2)
}