两个列名相同的datatable合并
时间: 2024-10-19 14:07:26 浏览: 12
在C#中,如果两个 `DataTable` 的列名相同,可以直接使用 `Merge()` 方法将它们合并到同一个表中,但需要注意的是,这会保留第一个 `DataTable` 中的数据,第二个 `DataTable` 的数据会被覆盖。下面是一个简单的示例[^1]:
```csharp
// 假设 DataTable1 和 DataTable2 分别有两个相同的列 "Name"
DataTable dataTable1 = new DataTable();
dataTable1.Columns.Add("Name", typeof(string)); // 添加列
DataTable dataTable2 = new DataTable();
dataTable2.Columns.Add("Name", typeof(string)); // 数据已经存在,与dataTable1同名
// Merge DataTable2 到 DataTable1
dataTable1.Merge(dataTable2);
// 现在,dataTable1 的 "Name" 列包含了来自 both tables 的数据
```
然而,如果你想保留每个表的独特数据而不覆盖,可能需要创建一个新的 `DataTable` 并手动添加合并后的结果[^2]:
```csharp
// 创建一个新的 DataTable
DataTable mergedTable = new DataTable();
// 从各自表格中选取列
mergedTable.Columns.AddRange(dataTable1.Columns.Cast<DataColumn>());
mergedTable.Columns.AddRange(dataTable2.Columns.Cast<DataColumn>());
// 遍历两个表格,将数据添加到新的表格
foreach (DataRow row in dataTable1.Rows)
{
mergedTable.ImportRow(row);
}
foreach (DataRow row in dataTable2.Rows)
{
if (!mergedTable.Rows.Contains(row.ItemArray))
{
mergedTable.Rows.Add(row.ItemArray);
}
}
```
阅读全文