合并两个具有不同列名的数据表

时间:2019-02-07 14:57:25

标签: vb.net datagridview datatable

我有两个具有不同列名称的数据表,因为它们是由两个不同的MySQL表填充的

  • DataTable1具有IDNameBrandGenreCreator
  • DataTable2具有IDNameBrandTypeEntryCreator

我想将两者合并,以便可以同时在DataGridView1中显示它们。我做到了

DataTable2.Columns(3).ColumnName = "Genre" DataTable2.Columns(4).ColumnName = "Creator"

然后   DataTable1.Merge(DataTable2, false, MissingSchemaAction.Add) BindingSource1.DataSource = DataTable1 DataGridView1.Source = BindingSource1

但是在显示时,它仅显示来自DataTable2的数据

1 个答案:

答案 0 :(得分:1)

问题可能是由于Merge使用表的PrimaryKey查找要更新的现有记录,如果找不到它,则添加新记录。如果是这种情况,那么您应该禁用通过数据适配器填充表后检索到的PrimaryKey信息。

dataTable1.PrimaryKey = Nothing
dataTable2.PrimaryKey = Nothing
dataTable1.Merge(dataTable2, false, MissingSchemaAction.Add)
....

现在,合并无法找到匹配项,因此dataTabl2中的每个记录都被添加到dataTable1中。但是,我应该警告您注意此dataTable1上其他操作的性能和正确性。
现在没有PrimaryKey设置,这可能是更新和删除行时出现问题的根源(当然,如果您有这些操作)