ImportRow делает столбец новой строки отсутствующим

Я хочу скопировать все строки из старой таблицы данных (oldDT) в новую таблицу данных (dt), используя метод ImportRow. Но новая строка не имеет того же столбца, что и старая. Вот мой код:

foreach (DataRow dr in oldDT.Rows)
{
    MessageBox.Show(dr["tenant_no"].ToString()); //giving a correct result
    dt.ImportRow(dr);
    MessageBox.Show(dt.Rows[0]["tenant_no"].ToString()); //giving an error Column 'tenant_no' does not belong to table .
}

я пытаюсь использовать ответ С# простой способ скопировать или клонировать DataRow? и вот мой новый код:

foreach (DataRow dr in oldDT.Rows)
{
    MessageBox.Show(dr["tenant_no"].ToString());
    DataRow newDR = oldDT.NewRow();
    newDR.ItemArray = dr.ItemArray.Clone() as object[];
    dt.Rows.Add(newDR); //giving an error "This row already belongs to another table."
    MessageBox.Show(dt.Rows[0]["tenant_no"].ToString());
}

Кто-нибудь может мне помочь?


person Kuro13    schedule 24.12.2013    source источник


Ответы (2)


Попробуйте это... это сработает

 DataTable dt= new DataTable();
   dt= oldDT.Clone();
    for (int i=0;i < oldDT.Rows.Count; i++)
    {
        dt.ImportRow(dataTable.Rows[i]);
    }
person Kumod Singh    schedule 24.12.2013

Вы можете использовать DataTable. Скопируйте, если вы не привязаны к использованию ImportRow :

Копирует как структуру, так и данные для этого DataTable.

DataTable dt = oldDt.Copy();
person DROP TABLE users    schedule 24.12.2013
comment
на самом деле, я хочу объединить более 1 старой таблицы в одну. поэтому я думаю, что это нельзя использовать. - person Kuro13; 24.12.2013
comment
@ Kuro13 Хорошо, извини, не знал. Это работает, если вы просто используете NewDataTable.Rows.Add(drfromoldtable); ? - person DROP TABLE users; 24.12.2013
comment
он выдаст ошибку, что строка уже принадлежит другой таблице, потому что, насколько я знаю, строка может принадлежать только 1 таблице. - person Kuro13; 24.12.2013
comment
@ Kuro13 ах, да, эта надоедливая ошибка. Возможно, этот ответ может помочь вам, если вы еще не пробовали это. stackoverflow.com/a/12025072/1483002 - person DROP TABLE users; 24.12.2013
comment
наконец, я использую «datatable.clone ()», чтобы клонировать только схему, и она работает. Благодарность.. - person Kuro13; 24.12.2013