如何在Power Automate Desktop中合并列数同列名不同的DataTable?
在Power Automate Desktop中合并列名不同但列数相同的DataTable(无需foreach循环)
可以实现该需求,核心思路是先将DT2的列名修改为与DT1完全一致(操作DT2的副本,不影响原输入数据),再执行Merge操作即可按DT1的结构追加数据。
调整后的C#脚本
// 克隆DT2的副本,避免修改原始输入数据 DataTable dt2Clone = DT2.Copy(); // 将副本的列名批量修改为与DT1对应列的名称(按列顺序匹配) for (int i = 0; i < dt2Clone.Columns.Count; i++) { dt2Clone.Columns[i].ColumnName = DT1.Columns[i].ColumnName; } // 合并修改后的DT2副本到DT1,此时列名完全匹配,数据会正确追加 DT1.Merge(dt2Clone); FinalTable = DT1.DefaultView.ToTable();
脚本参数设置(与原设置一致)
| .NET参数名 | 类型 | 方向 | 输入值 | 输出变量 |
|---|---|---|---|---|
| DT1 | Datatable | 输入 | %DataTable% | |
| DT2 | Datatable | 输入 | %DataTable2% | |
| FinalTable | Datatable | 输出 | %TemporalTable% |
原理说明
- 使用
DT2.Copy()创建DT2的完整副本,确保原输入的DataTable不会被修改; - 通过for循环按列顺序将副本的列名替换为DT1的列名,解决Merge时列名不匹配的问题;
- 执行
DT1.Merge(dt2Clone)时,因为两张表的列结构(列名、列数、类型)完全一致,DT2的行会直接追加到DT1中,不会新增列或产生空行。
内容的提问来源于stack exchange,提问作者Juan David Puello Gómez
相关产品推荐
相关产品推荐

