Как мы можем скопировать данные столбца данных таблицы данных в другую таблицу данных? - PullRequest
1 голос
/ 06 апреля 2010

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

DataTable datatable1=new DataTable();

и в этой таблице четыре столбца, но мне нужен только один столбец. Так что я делаю как

DataTable datatable2=new DataTable(); 
addressAndPhones2.Columns.Add(addressAndPhones.Columns[0].ColumnName,addressAndPhones.Columns[0].DataType);

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

Ответы [ 2 ]

11 голосов
/ 06 апреля 2010

На ум приходят два решения:

  1. после создания столбца выполните цикл по всем строкам, чтобы скопировать данные из источника в цель.
  2. Выполните datatable1.Copy (), чтобы скопировать все столбцы + данные и удалить ненужные.

Второй код проще, но он скопирует ненужные данные (что означает дополнительное время и память).

Для первого, ЕСЛИ вы подготовили таблицу данных судьбы И имена столбцов (и типы) в источнике и судьбе совпадают:

private void CopyColumns(DataTable source, DataTable dest, params string[] columns)
{
  foreach (DataRow sourcerow in source.Rows)
  {
     DataRow destRow = dest.NewRow();
     foreach(string colname in columns)
     {
        destRow[colname] = sourcerow[colname];
     }
     dest.Rows.Add(destRow);
  }
}

Вы можете использовать это как:

CopyColumns(source, destiny, "Column1", "column2");

имя любого количества столбцов.

3 голосов
/ 06 апреля 2010

Вы можете перебрать все строки примерно так:

private void CopyColumn(DataTable srcTable, DataTable dstTable, string srcColName, string dstColName)
{
    foreach (DataRow row in srcTable.Rows )
    {
        DataRow newRow = dstTable.NewRow();
        newRow[dstColName] = row[srcColName];
        dstTable.Rows.Add(newRow);
    }
}
...