我创建了 3 个数据表
var dt1= new DataTable();
var dt2= new DataTable();
var dt3= new DataTable();
然后循环
foreach (DataRow row1 in dt1.Rows)
{
dt3.Rows.Add(row1.ItemArray);
foreach (DataRow row2 in dt2.Rows)
{
var Id2 = row1["Id"];
var Id1= row2["Id"];
if (Id1 == Id2)
{
dt3.rows["Name"] = "" ; // doesnt work
}
}
}
如您所见,我在 2 个数据表上循环。然后在内部循环中我检查记录是否匹配。现在,如果记录匹配,那么我想更新 dt3 数据表上的“名称”列。
我试过用
dt3.rows["Name"] = "" ;
但这行不通。我知道这是因为我再次需要在 dt3 数据表上循环并且 为该循环中的列赋值。但不确定该怎么做以及是否有更好的解决方案。我的意思是我们可以在 dt3 数据表中找到 id,然后更新值。但不确定该怎么做 有比在 2 表上循环更智能的解决方案吗?
最佳答案
不需要第一个foreach。一个简单的 DataTable.Copy会将原始表中的所有数据和结构带到目标表中。然后循环第二个表和Select在第三个上找到匹配的行并清除名称。
dt3 = dt1.Copy();
foreach (DataRow row2 in dt2.Rows)
{
DataRow[] match = dt3.Select("ID=" + row2["ID"].ToString());
if(match.Lenght > 0)
match[0]["Name"] = "" ;
}
不确定这是否比其他答案更高效。需要测试
关于c# - 循环遍历 2 个数据表并将值添加到第三个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17465519/