C# 将现有表中的数据行添加到新表

C# 将现有表中的数据行添加到新表,c#,.net,ado.net,asp.net-3.5,datarow,C#,.net,Ado.net,Asp.net 3.5,Datarow,嗨,我想添加一个我从数据表返回的数据行到一个新的数据表 这是我使用的代码: foreach (DataRow dr1 in dt.Rows) { string AptType = dr1["AppointmentType"].ToString(); if (AptType == "FreeTime") { dt2.ImportRow(dr1); } } RadGrid2.DataSource = dt2; reader.Close(); conn.Close(); 问题

嗨,我想添加一个我从数据表返回的数据行到一个新的数据表

这是我使用的代码:

foreach (DataRow dr1 in dt.Rows)
{
  string AptType = dr1["AppointmentType"].ToString();
  if (AptType == "FreeTime")
  {
    dt2.ImportRow(dr1);
  }
}
RadGrid2.DataSource = dt2;
reader.Close();
conn.Close();
问题是,当我运行带有表的页面时,我得到一个数据键错误,其中一列无法识别


提前感谢

这两个数据表是否具有相同的模式?如果这些错误与列、数据类型或键不匹配,则可能会抛出这些错误。

您应该使用类型化TableDataAdapters,我会让您的生活更轻松

这很容易做到,也很容易理解

遵循本教程

一旦你掌握了这个概念,你应该这样做:

MyTypedTableAdapter tableAdapter = new MyTypedTableAdapter();
    MyTypedDataTable dt = tableAdapter.GetData();
    foreach (MyTypedDataRow row in dt.Rows)
    {
        string AptType = row.AppointmentType;
        if (AptType == "FreeTime")
        {
            dt2.ImportRow(row);
        }
    }
    RadGrid2.DataSource = dt2;

它们应该具有相同的模式,我以前没有这样做过。我需要先设置列,因为我认为克隆函数可以做到这一点。如果datatable 2是datatable 1的克隆,则不需要,反之亦然。Clone()复制所有列和约束。您可以发布表的简化模式吗?#TempEngineerGroupMain(AppointmentType VARCHAR(50)、BookedDate DateTime、BookedFromTime DateTime、BookedToTime DateTime、TotalDays INT、JobMins INT)这是我存储过程返回的临时表,很好,但没有帮助。你能发布准确的错误消息吗?谢谢你在这方面的帮助,我已经修复了它。这是一个表之间的模式错误的情况,我遭受睡眠抑制,没有注意到异常消息是什么