C#有四张datatable表将里面相同数据对应的数据合并到一张新表,并显示到dgv中
时间: 2024-01-21 21:17:29 浏览: 26
可以使用 LINQ 的 Join 操作实现。假设你有四个 DataTable 对象,分别为 table1、table2、table3 和 table4,它们都有一个共同的列名为 "ID",并且要合并的列名为 "Data",可以按照以下步骤操作:
1. 将四个 DataTable 对象合并成一个 DataTable 对象:
```
DataTable combinedTable = new DataTable();
combinedTable.Columns.Add("ID", typeof(int));
combinedTable.Columns.Add("Data", typeof(string));
foreach (DataRow row in table1.Rows)
{
combinedTable.Rows.Add(row["ID"], row["Data"]);
}
foreach (DataRow row in table2.Rows)
{
combinedTable.Rows.Add(row["ID"], row["Data"]);
}
foreach (DataRow row in table3.Rows)
{
combinedTable.Rows.Add(row["ID"], row["Data"]);
}
foreach (DataRow row in table4.Rows)
{
combinedTable.Rows.Add(row["ID"], row["Data"]);
}
```
2. 使用 LINQ 的 Join 操作将相同 ID 的行合并:
```
var query = from row in combinedTable.AsEnumerable()
group row by row.Field<int>("ID") into grp
select new
{
ID = grp.Key,
Data = string.Join(", ", grp.Select(r => r.Field<string>("Data")))
};
DataTable resultTable = new DataTable();
resultTable.Columns.Add("ID", typeof(int));
resultTable.Columns.Add("Data", typeof(string));
foreach (var item in query)
{
resultTable.Rows.Add(item.ID, item.Data);
}
```
3. 将结果显示到 DataGridView 控件中:
```
dataGridView1.DataSource = resultTable;
```