0

有没有办法用另一个数据表中的另一个值替换数据表中所有出现的值。例如,我有两个数据表,一个有 Itemid,另一个有 itemid 和项目名称。我需要先替换项目 ID带有第二个数据表中项目名称的数据表。有没有办法一次性替换所有出现的事件,或者我应该使用通常的循环方法并使用 Datatable.Select 方法。请帮助。提前致谢。

4

2 回答 2

0

那这个呢?(我意识到这是一个循环 - 但非常紧凑,任何内置方法都会循环,只是在幕后)

        //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//
        /////////////////////////////////////////////////////////////////
于 2012-09-03T19:36:46.337 回答
0

使用 MySQL 我会尝试:

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
于 2012-09-03T19:13:29.913 回答