如何将数据表列和值复制到另一个数据表
本文关键字:数据表 复制 另一个 | 更新日期: 2023-09-27 18:02:42
我有一个数据表dt1,它有4列(名称、地址、联系人、标记(,有0行,还有另一个数据表格dt2,它有2列(StdName、StdAddress(,只有几行。
当我在做类似dt1=dt2.copy((的事情时;那么我的dt1要找零了。这是我不想要的。
我想将dt2列和值复制到dt1。因此,在我的dt1的列(名称和地址(中,将填充stdName和StdAddress值。
请有人帮我怎么做。
我尝试过这个解决方案
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);
}
}
CopyColumns(source, destiny, "Column1", "column2");
它帮助我解决问题。
试试这个:
for (int i = 0; i < dt2.Rows.Count; i++)
{
dt1.Rows.Add(dt2.Rows[i][0], dt2.Rows[i][1]);
}
for (int k = 0; k < dt2.Rows.Count; k++)
{
dt1.Rows[k]["Name"] = dt2.Rows[k]["StdName"];
dt1.Rows[k]["Address"] = dt2.Rows[k]["StdAddress"];
}
试试这个。
DataTable dtEmp = new DataTable("EMP");
dtEmp.Columns.Add("Name", typeof(String));
dtEmp.Columns.Add("Address", typeof(String));
dtEmp.Columns.Add("Contact", typeof(String));
dtEmp.Columns.Add("Marks", typeof(String));
DataTable dtStd = new DataTable("STD");
dtStd.Columns.Add("StdName", typeof(String));
dtStd.Columns.Add("StdAddress", typeof(String));
foreach (DataColumn dc in dtStd.Columns)
{
dtEmp.Columns.Add(dc.ColumnName, dc.DataType);
}
// Import rows from dtStd Table.
试试……
DataTable dt1 = new DataTable();
dt1.Columns.Add("col1", typeof(String));
dt1.Columns.Add("col2", typeof(String));
dt1.Columns.Add("col3", typeof(String));
dt1.Columns.Add("col4", typeof(String));
DataTable dt2 = new DataTable();
dt2.Columns.Add("col5", typeof(String));
dt2.Columns.Add("col6", typeof(String));
dt1.Merge(dt2);
我知道这是旧的,但数据来自哪里?
如果您正在查询sql数据库,您可以更改:
SELECT <column1>, <column2> FROM...
SELECT <column2>, <column1> FROM...
查询并返回具有所需列的数据表。
我不确定,但你可以试试这个。。。。
Datatable1.Merge(Datable2)
它将为您提供类似的输出
for (int k = 0; k < dt2.Rows.Count; k++) {
dt1.Rows[k]["Name"] = dt2.Rows[k]["StdName"];
dt1.Rows[k]["Address"] = dt2.Rows[k]["StdAddress"];
}
这对我来说非常好。我只需要用VB重写它,如下所示:
For r = 0 To t2.Rows.Count - 1
t1.Rows(r)("Stat") = t2.Rows(r)("Stat")
t1.Rows(r)("Dest") = t2.Rows(r)("Dest")
t1.Rows(r)("Orig") = t2.Rows(r)("Orig")
Next
您可以通过调用clear来克隆对表的引用并删除行,如下所示:
NewDataTable= OldDatatable.Clone();
NewDataTable.rows.clear();
如果计算的值对您来说足够了,那么您可以使用表达式属性,而无需循环整个数据表。
假设您已经有一个名为电子邮件的列,那么您可以创建一个从邮件派生的名为用户名列:
dataTable.Columns.Add("UserName", typeof(string), "Email");