C# 用另一个数据表中的值替换数据表中的所有引用
是否有任何方法将数据表中出现的某个值替换为其他数据表中的另一个值。例如,我有两个数据表,一个有Itemid,另一个有Itemid和item name。我需要将第一个数据表中的item id替换为第二个数据表中的item name。是否有任何可能的方法替换所有数据表中的item id一次性发生,或者我应该使用通常的循环方法并使用Datatable。选择方法。请帮助。提前感谢。对于MySQL,我会尝试:C# 用另一个数据表中的值替换数据表中的所有引用,c#,datatable,C#,Datatable,是否有任何方法将数据表中出现的某个值替换为其他数据表中的另一个值。例如,我有两个数据表,一个有Itemid,另一个有Itemid和item name。我需要将第一个数据表中的item id替换为第二个数据表中的item name。是否有任何可能的方法替换所有数据表中的item id一次性发生,或者我应该使用通常的循环方法并使用Datatable。选择方法。请帮助。提前感谢。对于MySQL,我会尝试: UPDATE table1 t1, table2 t2 SET t1.itemid = t2.i
UPDATE table1 t1, table2 t2
SET t1.itemid = t2.itemname
WHERE t1.itemid = t2.itemid
使用MS-SQL,我会尝试
UPDATE t1
SET t1.itemid = t2.itemname
FROM table1 t1 INNER JOIN table2 t2
ON t1.itemid = t2.itemid
这个怎么样?(我意识到这是一个循环——但非常紧凑,任何内置方法都会在幕后循环)
您使用的是哪个数据库?@Marco我使用的是MS-SQL数据库。第一个数据表来自excel文件,我将每天从中获取。第二个数据表来自SQL表。
//Build first Test DT
DataTable dt1 = new DataTable();
dt1.Columns.Add("itemID", typeof(string));
//Build Second Test DT
DataTable dt2 = new DataTable();
dt2.Columns.Add("itemID", typeof(string));
dt2.Columns.Add("itemName", typeof(string));
//aad 3 DataRows to first DT - ID only
DataRow dt1_1 = dt1.NewRow();
dt1_1["itemID"] = "1";
DataRow dt1_2 = dt1.NewRow();
dt1_2["itemID"] = "2";
DataRow dt1_3 = dt1.NewRow();
dt1_3["itemID"] = "3";
dt1.Rows.Add(dt1_1);
dt1.Rows.Add(dt1_2);
dt1.Rows.Add(dt1_3);
//aad 3 DataRows to first DT - ID & Name
DataRow dt2_1 = dt2.NewRow();
dt2_1["itemID"] = "1";
dt2_1["itemName"] = "ItemOne";
DataRow dt2_2 = dt2.NewRow();
dt2_2["itemID"] = "2";
dt2_2["itemName"] = "ItemTwo";
DataRow dt2_3 = dt2.NewRow();
dt2_3["itemID"] = "3";
dt2_3["itemName"] = "ItemThree";
dt2.Rows.Add(dt2_1);
dt2.Rows.Add(dt2_2);
dt2.Rows.Add(dt2_3);
////////////////////////////////////////////////////////
//replacing code - quite comact - assumed itemId is PK//
////////////////////////////////////////////////////////
foreach (DataRow dr in dt1.Rows)
{
string strSelect = "[itemID] = '"+ dr["itemID"] +"'";
DataRow[] myRow = dt2.Select(strSelect);
if (myRow.Length == 1)
{
dr["itemID"] = myRow[0]["itemName"];
}
}
/////////////////////////////////////////////////////////////////
//dt1 now has itemOne, itemTwo and itemThree instead of 1, 2, 3//
/////////////////////////////////////////////////////////////////