C# 把DataTable A,DataTable B,DataTable C,DataTable D里面相同的序列号的相关的数据用代码提取出来组成一行
时间: 2023-12-14 21:40:16 浏览: 31
假设四个 DataTable 分别为 A、B、C、D,它们都有一个名为 "序列号" 的列,且需要合并的列名为 "相关数据"。
以下是一个示例代码,可以将相同序列号的数据合并成一行,并输出到一个新的 DataTable:
```csharp
// 创建一个新的 DataTable 用于存储合并后的数据
DataTable mergedTable = new DataTable();
// 添加序列号列
mergedTable.Columns.Add("序列号");
// 添加相关数据列
for (int i = 0; i < 4; i++) {
mergedTable.Columns.Add($"相关数据{i + 1}");
}
// 遍历 A 表中的每一行数据
foreach (DataRow rowA in A.Rows) {
// 从 A 表中获取序列号
string sequenceNumber = rowA["序列号"].ToString();
// 创建一个新的 DataRow,用于存储合并后的数据
DataRow mergedRow = mergedTable.NewRow();
mergedRow["序列号"] = sequenceNumber;
// 遍历 B、C、D 表中的每一行数据
for (int i = 0; i < 3; i++) {
DataTable currentTable = i switch {
0 => B,
1 => C,
2 => D
};
// 在当前表中查找序列号与 A 表中相同的行
DataRow[] matchingRows = currentTable.Select($"序列号 = '{sequenceNumber}'");
// 如果找到了匹配的行,则将相关数据添加到 mergedRow 中
if (matchingRows.Length > 0) {
mergedRow[$"相关数据{i + 1}"] = matchingRows[0]["相关数据"];
}
}
// 将合并后的行添加到 mergedTable 中
mergedTable.Rows.Add(mergedRow);
}
```
需要注意的是,上述代码假设 B、C、D 表中的相关数据列名都为 "相关数据",如果列名不同,则需要将代码中的 $"相关数据{i + 1}" 修改为实际的列名。