Як можна скопіювати конкретні рядки з DataTable в інший Datable в c #? Буде більше одного ряду.
Як можна скопіювати конкретні рядки з DataTable в інший Datable в c #? Буде більше одного ряду.
Відповіді:
foreach (DataRow dr in dataTable1.Rows) {
if (/* some condition */)
dataTable2.Rows.Add(dr.ItemArray);
}
Наведений вище приклад передбачає , що dataTable1
і dataTable2
має однакове число, тип і порядок стовпців.
ItemArray
частину в кінці виразу. Переконайтеся, що ви додаєте значення рядка, а не сам рядок.
DataTable.Clone
методу: msdn.microsoft.com/en-us/library/…
Скопіюйте вказані рядки з таблиці в іншу
// 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);
}
}
Спробуйте це
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);
}
Перевірте це, можливо, вам це сподобається (раніше, будь ласка, клонуйте таблицю1 до таблиці2):
table1.AsEnumerable().Take(recodCount).CopyToDataTable(table2,LoadOption.OverwriteChanges);
Або:
table1.AsEnumerable().Where ( yourcondition ) .CopyToDataTable(table2,LoadOption.OverwriteChanges);
Підтримується: 4, 3,5 SP1, тепер ви можете просто викликати метод на об’єкті.
DataTable dataTable2 = dataTable1.Copy()
В результаті інших публікацій, це найкоротше, що я міг отримати:
DataTable destTable = sourceTable.Clone();
sourceTable.AsEnumerable().Where(row => /* condition */ ).ToList().ForEach(row => destTable.ImportRow(row));
sourceTable
волю, destTable
також буде зрозумілою?
нижче зразок був би найшвидшим способом копіювання одного рядка. кожна комірка копіюється на основі імені стовпця. у випадку, якщо вам не потрібна певна комірка для копіювання, тоді спробуйте вловити або додати, якщо. якщо ви збираєтесь скопіювати більше 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);
набір даних1.Таблиці [1]. Рядки [ 0 ] [i]; змінити індекс 0 на вказаний індекс рядка, або ви можете використовувати змінну, якщо ви збираєтеся циклічно або якщо це буде логічно
Для тих, хто хоче однозначний запит 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
Ви також можете вказати, де пункт, якщо вам потрібна певна умова.
Щоб скопіювати цілу таблицю даних, просто зробіть це:
DataGridView sourceGrid = this.dataGridView1;
DataGridView targetGrid = this.dataGridView2;
targetGrid.DataSource = sourceGrid.DataSource;
Я створив простий спосіб зробити це питання
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);
}