将数据从一个DataTable复制到另一个具有不同结构的DataTable的最佳方法

时间:2011-04-23 11:08:14

标签: c# .net vb.net linq ado.net

我正在将数据从DataTable复制到另一个具有结构的DataTable。 我必须在循环中硬编码列号并复制对象数组中的数据。

实现目标的最佳途径是什么?

IEnumerable<DataRow> query = from vendInv in VendorInvoiceStagingTable.AsEnumerable()
                             where vendInv.Field<string>(VendInvoice.Number) == InvoiceHeader
                             select vendInv;

Object[] obj = new Object[10];
var item = query.First();

for (int idx = 0; idx < 10; idx++)
{
    obj[idx] = item[idx];
}

VendorInvoiceTable.Rows.Add(obj);

2 个答案:

答案 0 :(得分:1)

或许,查看适配器模式,它将允许您将一个数据表的结构调整为另一个数据表。可以在Dofactory找到简单的解释和示例代码。

答案 1 :(得分:0)

我不是100%确定为什么要在将数据放入VendorInvoiceTable之前将数据复制到数组中,但无论如何:

IEnumerable<DataRow> query = from vendInv in VendorInvoiceStagingTable.AsEnumerable()
                             where vendInv.Field<string>(VendInvoice.Number) == InvoiceHeader
                             select vendInv;

// Would this be ok?
VendorInvoiceTable.Rows.Add(query.First().ItemArray);

// ...or if not, how about this?
object[] sourceData = query.First().ItemArray;
object[] targetData = new object[sourceData.Length];
sourceData.CopyTo(targetData, 0);
VendorInvoiceTable.Rows.Add(targetData);