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

发布于 2024-11-03 03:52:59 字数 526 浏览 1 评论 0原文

我正在将数据从 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);

I am copying data from DataTable to another DataTable with a structure.
I have to hardcode columns number in the loop and copy the data in object array.

What will be the best way to achieve it ?

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

渔村楼浪 2024-11-10 03:52:59

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

Probably, check out Adapter pattern, it will allow you to adapt the structure of one data table to another. A simple explanation and sample code can be found at Dofactory.

鹿港巷口少年归 2024-11-10 03:52:59

我不是 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);

I'm not 100% sure why you want to copy the data to an array before putting it into the VendorInvoiceTable, but either way:

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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文