datatable dt1和datatable dt2 里面相同的序列号的相关的数据用代码提取出来组成一行,一行一行组合,组成一个新的表,然后再和界面显示控件绑定
时间: 2024-02-01 10:16:08 浏览: 32
假设序列号列为"SN",其他数据列为"Data1"和"Data2"。下面是一个示例代码,用于将相同序列号的数据行组合成一个新的数据表:
```csharp
// 创建一个新的数据表,用于存储组合后的数据
DataTable dtCombined = new DataTable();
dtCombined.Columns.Add("SN");
dtCombined.Columns.Add("Data1_DT1");
dtCombined.Columns.Add("Data2_DT1");
dtCombined.Columns.Add("Data1_DT2");
dtCombined.Columns.Add("Data2_DT2");
// 遍历 dt1 中的每一行数据
foreach (DataRow row1 in dt1.Rows)
{
// 获取当前行的序列号
string sn = row1["SN"].ToString();
// 在 dt2 中查找相同序列号的数据行
DataRow[] matchingRows = dt2.Select("SN = '" + sn + "'");
// 如果找到了匹配的行,则将两行数据组合成一行,并添加到新表中
if (matchingRows.Length > 0)
{
foreach (DataRow row2 in matchingRows)
{
DataRow combinedRow = dtCombined.NewRow();
combinedRow["SN"] = sn;
combinedRow["Data1_DT1"] = row1["Data1"];
combinedRow["Data2_DT1"] = row1["Data2"];
combinedRow["Data1_DT2"] = row2["Data1"];
combinedRow["Data2_DT2"] = row2["Data2"];
dtCombined.Rows.Add(combinedRow);
}
}
}
// 将新表绑定到界面显示控件
yourControl.DataSource = dtCombined;
```
需要注意的是,以上代码仅考虑了序列号在两个数据表中都有出现的情况。如果要处理某个数据表中存在而另一个数据表中不存在的序列号,还需要相应地进行扩展。