有没有办法在一个数据表中更新另一个数据表中的值。
例如,假设我有两个数据表dt1和dt2。
如上所示,我有两个数据表,我必须用第二个数据表中的newtable_name列值替换第一个数据表中的table_name列值,其中table_name的映射在数据表中都是通用的。
答案 0 :(得分:2)
以下是以下示例数据的解决方案:
foreach(DataRow row in originalTable.Rows)
{
DataRow rowsToUpdate = newNameTable.AsEnumerable().FirstOrDefault(r => r.Field<string>("table_name") == row.Field<string>("table_name"));
row.SetField("table_name", rowsToUpdate.Field<string>("table_name_new"));
}
我的样本数据我用来检查这是否有效:
DataTable originalTable = new DataTable();
originalTable.Clear();
originalTable.Columns.Add("Id");
originalTable.Columns.Add("table_name");
DataRow originalRow1 = originalTable.NewRow();
originalRow1["Id"] = 1;
originalRow1["table_name"] = "Table1";
originalTable.Rows.Add(originalRow1);
DataRow originalRow2 = originalTable.NewRow();
originalRow2["Id"] = 2;
originalRow2["table_name"] = "Table2";
originalTable.Rows.Add(originalRow2);
DataTable newNameTable = new DataTable();
newNameTable.Clear();
newNameTable.Columns.Add("table_name");
newNameTable.Columns.Add("table_name_new");
DataRow newNameRow = newNameTable.NewRow();
newNameRow["table_name"] = "Table1";
newNameRow["table_name_new"] = "Table1_new";
newNameTable.Rows.Add(newNameRow);
DataRow newNameRow2 = newNameTable.NewRow();
newNameRow2["table_name"] = "Table2";
newNameRow2["table_name_new"] = "Table2_new";
newNameTable.Rows.Add(newNameRow2);
答案 1 :(得分:0)
您可以在c#中选择以下代码:
dt1.Merge(dt2);
dt1.AcceptChanges();
此处 dt1 记录使用第一个语句中DataTable dt2 中的值进行更新。第二个语句提交对DataTable dt1 的更新。但是你需要确保的关键是两个表都应该有相同的模式,在这种情况下列名
希望这会有所帮助!!
答案 2 :(得分:0)
如果你对当前的框架进行了修改,我认为Linq是可行的方法。
This answer应该让你开始。
答案 3 :(得分:0)
圈起来
DataTable First_Table = new DataTable();
DataTable Second_Table = new DataTable();
for(int i =0 ; i<Frist_Table.Rows.Count; i++)
{
Second_Table.Rows[i]["Column_name"] =First_Table.Rows[i];["Column_name"]
}
Second_Table.AcceptChanges();