正在将仅有几列的数据复制到另一个数据表中
本文关键字:复制 数据 另一个 数据表 几列 | 更新日期: 2023-09-27 17:58:05
我有一个场景,其中我得到一个包含65列和100行的数据表。我需要再创建一个包含所有100行的数据表,即与原始数据表相同,但原始表中只有65列中的5列。有没有什么方法可以在不循环的情况下实现这一点?
尝试DataView。ToTable方法。
这样使用:
DataTable newTable = oldTable.DefaultView.ToTable(false, "ColumnName1", "ColumnName2", "ColumnName3", "ColumnName4", "ColumnName5");
DataTable oldTable = new DataTable();
DataTable newTable = oldTable.Copy();
for (int i = 5; i < 65; i++)
{
newTable.Columns.RemoveAt(i);
}
这样试试,
DataTable newTable = oldTable.Copy();
newTable.Columns.Remove("ColumnName");
您可以在此处删除不需要的列。
以下是您问题的最佳解决方案:
DataTable dt = new DataTable();
string [] column = {"Column1", "Column2"};
dt = DTItem.DefaultView.ToTable("dd", false, column);
//DTItem is the Existing Table and "dd" is the temporary tablename, u give whatever u want
让我们假设我们想要创建一个新的数据表,并获取现有数据表的前四列,并将其放入新数据表中。
private void button3_Click(object sender, EventArgs e)
{
DataTable destiny = new DataTable();
destiny.Columns.Add("c1");//set the columns you want to copy
destiny.Columns.Add("c2");
destiny.Columns.Add("c3");
destiny.Columns.Add("c4");
CopyColumns(dtST_Split, destiny, "c1", "c2","c3","c4");
}
// function to copy all rows but just specific columns from table 1 to table 2
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);
}
}