c# - 循环遍历 2 个数据表并将值添加到第三个

标签 c# datatable

我创建了 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/

相关文章:

c# - Visual Studio 2012 SQLite 安装未出现

c# - ASP.NET MVC + 填充下拉列表

c# - 使用字符串作为输入在 C# 中创建简单的 Excel 工作表

c# - 如何使用 C# 使用 Contains

angular - 仅在当前 PageSize 上选择 Mat-Table?

javascript - 我们如何对在线 Dynamics CRM 中的注释进行分类/标记?

c# - SQL 服务器 : conditional aggregate ;

c# - MoveNext 的前缀在堆栈中意味着什么?

javascript - 迭代DataTable()以获取每一行的td值

c# - 从数据表绘制图表