Как я могу скопировать данные из другой базы данных с определенной строкой - PullRequest
0 голосов
/ 03 июля 2018

У меня есть этот код, но он просто добавляется в первый столбец новой таблицы данных. Как я могу указать, в какой столбец он будет добавлен.

        for(int i = 0; i < dt.Rows.Count; i++)
        {
            newdt.Rows.Add(dt.Rows[i][1]);
        }

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Ниже код демонстрирует, как скопировать определенные строки в другую таблицу.

//Created new table
DataTable dt1 = new DataTable("dt1");
dt1.Columns.Add("Id", typeof(int));
dt1.Columns.Add("Name");

//Added dummy data
dt1.Rows.Add(1, "Abc");
dt1.Rows.Add(2, "Def");

//Clone table #2 from table #1
DataTable dt2 = dt1.Clone();
dt2.TableName = "dt2";

//Copy table #1 rows to table #2
for (int i = 0; i < dt1.Rows.Count; i++)
{
    DataRow drNew = dt2.NewRow();
    drNew.ItemArray = dt1.Rows[i].ItemArray;
    dt2.Rows.Add(drNew);
}
0 голосов
/ 03 июля 2018

Если вы хотите, чтобы вы не могли использовать Add для передачи значений, но вы можете использовать SetField:

for(int i = 0; i < dt.Rows.Count; i++)
{
    DataRow addedRow = newdt.Rows.Add();
    addedRow.SetField(1, dt.Rows[i][1]);
}

Или вы можете использовать «классический» способ:

addedRow[1] = dt.Rows[i][1];

Я предпочитаю SetField индексатору, потому что мне не нужно возиться с DbNull.Value, если я хочу сохранить нулевые значения. Вы можете просто передать обнуляемый тип, например int?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...