Лучший способ скопировать данные из одной таблицы данных в другую с другой структурой - PullRequest
0 голосов
/ 23 апреля 2011

Я копирую данные из 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 ]

1 голос
/ 23 апреля 2011

Возможно, посмотрите Шаблон адаптера , это позволит вам адаптировать структуру одной таблицы данных к другой.Простое объяснение и пример кода можно найти по адресу Dofactory .

0 голосов
/ 23 апреля 2011

Я не уверен на 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...