Копировать строки из одной таблицы данных в другую таблицу данных? - PullRequest
143 голосов
/ 26 октября 2010

Как я могу скопировать определенные строки из DataTable в другой Datable в c #?Будет более одного ряда.

Ответы [ 10 ]

232 голосов
/ 26 октября 2010
foreach (DataRow dr in dataTable1.Rows) {
    if (/* some condition */)
        dataTable2.Rows.Add(dr.ItemArray);
}

В приведенном выше примере предполагается, что dataTable1 и dataTable2 имеют одинаковое число, тип и порядок столбцов.

84 голосов
/ 12 октября 2012

Копировать указанные строки из таблицы в другую

// here dttablenew is a new Table  and dttableOld is table Which having the data 

dttableNew  = dttableOld.Clone();  

foreach (DataRow drtableOld in dttableOld.Rows)
{
   if (/*put some Condition */)
   {
      dtTableNew.ImportRow(drtableOld);
   }
}
18 голосов
/ 16 декабря 2011

Попробуйте

1002 *
12 голосов
/ 08 ноября 2012

Проверьте это, вам может понравиться (ранее, пожалуйста, клонируйте table1 to table2):

table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);

Или:

table1.AsEnumerable().Where ( yourcondition  ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
10 голосов
/ 28 февраля 2014

Поддерживается в: 4, 3.5 SP1, теперь вы можете просто вызвать метод объекта.

DataTable dataTable2 = dataTable1.Copy()
5 голосов
/ 13 августа 2015

В результате других постов, это самое короткое, что я мог получить:

DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
2 голосов
/ 03 января 2014

ниже образца будет самый быстрый способ скопировать одну строку.каждая ячейка копируется на основе имени столбца.если вам не нужна определенная ячейка для копирования, попробуйте catch или add if.если вы собираетесь скопировать более 1 строки, выполните цикл ниже.

DataRow dr = dataset1.Tables[0].NewRow();
for (int i = 0; i < dataset1.Tables[1].Columns.Count; i++)
{
    dr[dataset1.Tables[1].Columns[i].ColumnName] = dataset1.Tables[1].Rows[0][i];
}

datasetReport.Tables[0].Rows.Add(dr);

dataset1.Tables [1] .Rows [ 0 ] [i];замените индекс 0 на указанный вами индекс строки или вы можете использовать переменную, если вы собираетесь зацикливаться или она будет логической

1 голос
/ 28 марта 2019

Для тех, кому нужен SQL-запрос с одной командой:

INSERT INTO TABLE002 
(COL001_MEM_ID, COL002_MEM_NAME, COL002_MEM_ADD, COL002_CREATE_USER_C, COL002_CREATE_S)
SELECT COL001_MEM_ID, COL001_MEM_NAME, COL001_MEM_ADD, COL001_CREATE_USER_C, COL001_CREATE_S
FROM TABLE001;

Этот запрос скопирует данные из TABLE001 в TABLE002, и мы предполагаем, что оба столбца имели разные имена столбцов.

Имена столбцов отображаются один в один, например:

COL001_MEM_ID -> COL001_MEM_ID

COL001_MEM_NAME -> COL002_MEM_NAME

COL001_MEM_ADD -> COL002MM52_M2COL001_CREATE_USER_C -> COL002_CREATE_USER_C

COL002_CREATE_S -> COL002_CREATE_S

Вы также можете указать выражение where, если вам нужно какое-то условие.

1 голос
/ 04 января 2017
 private void CopyDataTable(DataTable table){
     // Create an object variable for the copy.
     DataTable copyDataTable;
     copyDataTable = table.Copy();
     // Insert code to work with the copy.
 }
0 голосов
/ 02 января 2019

Чтобы скопировать все данные, просто сделайте это:

DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...