Jawaban:
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
Contoh di atas mengasumsikan bahwa dataTable1
dan dataTable2
memiliki jumlah, jenis, dan urutan kolom yang sama.
ItemArray
bagian di akhir ungkapan. Pastikan Anda menambahkan nilai baris, bukan baris itu sendiri.
DataTable.Clone
metode ini: msdn.microsoft.com/en-us/library/…
Salin Baris yang Ditentukan dari Tabel ke yang lain
// 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);
}
}
Coba ini
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);
}
Lihat ini, Anda mungkin menyukainya (sebelumnya, silakan clone table1 ke table2):
table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
Atau:
table1.AsEnumerable().Where ( yourcondition ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
Didukung di: 4, 3.5 SP1, Anda sekarang dapat memanggil metode pada objek.
DataTable dataTable2 = dataTable1.Copy()
Sebagai hasil dari posting lain, ini adalah yang terpendek yang bisa saya dapatkan:
DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
sourceTable
akan destTable
juga jelas?
contoh di bawah ini akan menjadi cara tercepat untuk menyalin satu baris. setiap sel sedang disalin berdasarkan nama kolom. jika Anda tidak perlu sel tertentu untuk menyalin maka coba tangkapan atau tambahkan jika. jika Anda akan menyalin lebih dari 1 baris maka lilitkan kode di bawah ini.
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.Tabel [1]. Baris [ 0 ] [i]; ubah indeks 0 ke indeks baris yang Anda tentukan atau Anda dapat menggunakan variabel jika Anda ingin mengulang atau jika itu akan logis
private void CopyDataTable(DataTable table){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = table.Copy();
// Insert code to work with the copy.
}
Bagi mereka yang ingin query SQL perintah tunggal untuk itu:
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;
Kueri ini akan menyalin data dari TABLE001
ke TABLE002
dan kami menganggap bahwa kedua kolom memiliki nama kolom yang berbeda.
Nama kolom dipetakan satu-ke-satu seperti:
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
Anda juga dapat menentukan di mana klausa, jika Anda memerlukan beberapa syarat.
Untuk menyalin seluruh data hanya lakukan ini:
DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;
Saya telah membuat cara mudah untuk melakukan masalah ini
DataTable newTable = oldtable.Clone();
for (int i = 0; i < oldtable.Rows.Count; i++)
{
DataRow drNew = newTable.NewRow();
drNew.ItemArray = oldtable.Rows[i].ItemArray;
newTable.Rows.Add(drNew);
}