【发布时间】:2014-01-01 07:54:15
【问题描述】:
我有两个数据表
Dt1-
a b c d
e f g h
Dt2
a1 b1 c1 d1
e1 f1 g1 h1
我正在尝试将这两者连接起来创建另一个数据表作为-
Dt1
a b c d
e f g h
a1 b1 c1 d1
e1 f1 g1 h1
我正在做 dt1.merge(dt2)。它正在覆盖 d1 并仅将输出作为 dt2 的值。 有没有这样的方法,或者我必须像下面的方法一样将 dt2 逐行添加到 dt1?
foreach (DataRow dr in dt2.Rows) {
dt.Rows.Add(dr.ItemArray);
}
【问题讨论】:
-
架构一样吗?
-
是的,架构完全相同。 Datatabe.merge 正在覆盖我以前的数据。我不确定为什么会这样。
-
是否定义了主键?在这种情况下,每个
DataRow的RowState用于确定将使用的行。您应该在将其状态设置为Unchanged之前显式调用DataTable.AcceptChanges。除此之外,如果循环有效,请使用它。请注意,您也可以使用DataTable.ImportRow代替ItemArray-方法。 -
@TimSchmelter 我已将主键定义为每个数据表的第一列。你是不是建议我在创建主键时所做的更改没有保存,我必须调用acceptchanges?
-
那么两个表中的 PK 相同吗?如果是这样,您想对这些重复项做什么?
标签: c# asp.net datatable merge dataset