从另一个数据表更新数据表中的值

时间:2015-03-13 11:59:32

标签: c# .net datatable

有没有办法在一个数据表中更新另一个数据表中的值。

例如,假设我有两个数据表dt1和dt2。

enter image description here enter image description here

如上所示,我有两个数据表,我必须用第二个数据表中的newtable_name列值替换第一个数据表中的table_name列值,其中table_name的映射在数据表中都是通用的。

4 个答案:

答案 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();