C# 使用datatable.Rows.Add(dRow)时出错

C# 使用datatable.Rows.Add(dRow)时出错,c#,sql,datatable,C#,Sql,Datatable,我有一个datatable,其中一些行需要在某种条件下复制到一个新的datatable 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]); //------

我有一个datatable,其中一些行需要在某种条件下复制到一个新的datatable

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)   
}
---(2)没有发生任何错误,行也没有添加,但行是空的,只有一列


是否有任何解决方案。

for
循环修改为类似以下内容:

 foreach (DataRow row in dRows)
   {
       dtPerm.ImportRow(row);
   }
在将行添加到
数据表
之前,请确保已将列设置为存储行值。请参阅此代码:

 DataTable dtPerm = new DataTable();
 dtPerm.Columns.Add("Column1");
 dtPerm.Columns.Add("Column2");
 dtPerm.Columns.Add("Column3");
 dtPerm.Columns.Add("Column4");
 dtPerm.Columns.Add("Column5");
在此之后,将上面显示的
放入
循环,这样就可以正常工作了


希望这有帮助。

谢谢大家。我在循环开始时添加了一条语句,并修改了循环中的代码,现在运行良好

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)   
}
dt1=ds1.表[0];
dtPerm=dt1.Clone();
DataRow[]dRows=dt1.Select(“允许”=+false);
for(int i=0;i
查看:可能重复的“谢谢”。。我认为可以使用dtTarget=dtSource.Clone()代替您可能添加的语句。我添加了它们,以防您忘记这样做,因此您收到了该错误。:)
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)   
}