Скопировать строки из одного Datatable в другой DataTable?

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

Ответ 1

foreach (DataRow dr in dataTable1.Rows) {
    if (/* some condition */)
        dataTable2.Rows.Add(dr.ItemArray);
}

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

Ответ 2

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

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

Ответ 3

Попробуйте это

    String matchString="ID0001"//assuming we have to find rows having key=ID0001
    DataTable dtTarget = new DataTable();
    dtTarget = dtSource.Clone();
    DataRow[] rowsToCopy;
    rowsToCopy = dtSource.Select("key='" + matchString + "'");
    foreach (DataRow temp in rowsToCopy)
    {
        dtTarget.ImportRow(temp);
    }

Ответ 4

Проверьте это, вам может понравиться (ранее, пожалуйста, клонируйте таблицу1 в таблицу2):

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

Или:

table1.AsEnumerable().Where ( yourcondition  ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);

Ответ 5

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

DataTable dataTable2 = dataTable1.Copy()

Ответ 6

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

DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));

Ответ 7

ниже образца будет самый быстрый способ скопировать одну строку. каждая ячейка копируется на основе имени столбца. в случае, если вам не нужна конкретная ячейка для копирования, попробуйте поймать или добавить 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 на указанный указатель строки или вы можете использовать переменную, если вы перейдете в цикл или если она будет логической

Ответ 8

 private void CopyDataTable(DataTable table){
     // Create an object variable for the copy.
     DataTable copyDataTable;
     copyDataTable = table.Copy();
     // Insert code to work with the copy.
 }

Ответ 9

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

DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;

Ответ 10

Для тех, кто хочет 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 → COL002_MEM_ADD

COL001_CREATE_USER_C → COL002_CREATE_USER_C

COL002_CREATE_S → COL002_CREATE_S