C# 把DataTable dt1,DataTable dt2,DataTable dt3里面相同的序列号的相关的数据用代码提取出来组成一行,一行一行组合,组成一个新的表,然后再和界面显示控件绑定
时间: 2023-12-18 20:04:00 浏览: 110
你可以使用 LINQ 查询语句来实现这个功能。具体的步骤如下:
1. 创建一个新的 DataTable 对象,用于存储提取出来的数据。
2. 使用 LINQ 查询语句,将三个 DataTable 对象中相同序列号的数据提取出来,组成一个新的匿名类型对象。
3. 将匿名类型对象转换成 DataRow 对象,并添加到新的 DataTable 对象中。
4. 将新的 DataTable 对象与界面显示控件绑定。
下面是示例代码:
```csharp
// 创建新的 DataTable 对象
DataTable newTable = new DataTable();
// 添加列
newTable.Columns.Add("序列号", typeof(string));
newTable.Columns.Add("数据1", typeof(int));
newTable.Columns.Add("数据2", typeof(int));
newTable.Columns.Add("数据3", typeof(int));
// 使用 LINQ 查询语句,将三个 DataTable 对象中相同序列号的数据提取出来,组成一个新的匿名类型对象
var query = from row1 in dt1.AsEnumerable()
join row2 in dt2.AsEnumerable()
on row1.Field<string>("序列号") equals row2.Field<string>("序列号")
join row3 in dt3.AsEnumerable()
on row1.Field<string>("序列号") equals row3.Field<string>("序列号")
select new
{
序列号 = row1.Field<string>("序列号"),
数据1 = row1.Field<int>("数据1"),
数据2 = row2.Field<int>("数据2"),
数据3 = row3.Field<int>("数据3")
};
// 将匿名类型对象转换成 DataRow 对象,并添加到新的 DataTable 对象中
foreach (var item in query)
{
DataRow newRow = newTable.NewRow();
newRow["序列号"] = item.序列号;
newRow["数据1"] = item.数据1;
newRow["数据2"] = item.数据2;
newRow["数据3"] = item.数据3;
newTable.Rows.Add(newRow);
}
// 将新的 DataTable 对象与界面显示控件绑定
yourControl.DataSource = newTable;
```
阅读全文