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 .
}

опитвам се да използвам отговора C# прост начин за копиране или клониране на 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