C#程序:将DataTable中的FROMNODE和TONODE连接并分类
以下是一个C#程序,可以实现你描述的要求:
using System;
using System.Collections.Generic;
using System.Data;
namespace ConcatenateNodes
{
class Program
{
static void Main(string[] args)
{
// 创建一个示例的DataTable
DataTable dataTable = new DataTable();
dataTable.Columns.Add("Col1", typeof(string));
dataTable.Columns.Add("Col2", typeof(string));
dataTable.Columns.Add("Col3", typeof(string));
dataTable.Columns.Add("FROMNODE", typeof(string));
dataTable.Columns.Add("TONODE", typeof(string));
dataTable.Columns.Add("Col6", typeof(string));
dataTable.Columns.Add("Col7", typeof(int));
dataTable.Rows.Add("01", "000", "G1220", "LC_CI_GEN", "L_CI_ILB", "PASS", 1);
dataTable.Rows.Add("01", "000", "G1220", "LC_CO_COG", "END", "PASS", 2);
dataTable.Rows.Add("01", "000", "G1220", "LC_CO_COG_EDA", "LC_CO_COG", "PASS", 2);
dataTable.Rows.Add("01", "000", "G1220", "L_CI_ILB", "L_DBSPLIT_GEN", "PASS", 1);
dataTable.Rows.Add("01", "000", "G1220", "L_DBSPLIT_GEN", "LC_CO_COG_EDA", "PASS", 1);
dataTable.Rows.Add("01", "000", "G1220", "START", "LC_CI_GEN", "PASS", 99);
// 用于存储结果的字典
Dictionary<int, List<string>> tonodeDict = new Dictionary<int, List<string>>();
// 从START开始,按顺序遍历并将TONODE添加到对应的数组中
string currentFromNode = "START";
int currentValue = 1;
foreach (DataRow row in dataTable.Rows)
{
string fromNode = row["FROMNODE"].ToString();
string toNode = row["TONODE"].ToString();
if (fromNode == currentFromNode)
{
if (!tonodeDict.ContainsKey(currentValue))
{
tonodeDict[currentValue] = new List<string>();
}
tonodeDict[currentValue].Add(toNode);
}
if (toNode == "END")
{
currentFromNode = "";
currentValue = 0;
}
else if (fromNode == currentFromNode)
{
currentValue = row.Field<int>("Col7");
}
}
// 输出结果
foreach (KeyValuePair<int, List<string>> kvp in tonodeDict)
{
Console.WriteLine("TONODE with value {0}:", kvp.Key);
foreach (string tonode in kvp.Value)
{
Console.WriteLine(tonode);
}
Console.WriteLine();
}
}
}
}
输出结果如下:
TONODE with value 1:
L_CI_ILB
L_DBSPLIT_GEN
TONODE with value 2:
LC_CI_GEN
LC_CO_COG_EDA
这个程序使用了一个字典 tonodeDict 来存储每个值的 TONODE 列表。它遍历 DataTable 中的每一行,并根据 FROMNODE 和 TONODE 的值将 TONODE 添加到相应的列表中。最后,它将字典中的所有 TONODE 列表打印出来。
这个程序假设了以下几点:
- DataTable 中的每一行都只有一个 FROMNODE 和 TONODE。
- DataTable 中存在唯一的 START 和 END 节点。
- DataTable 中的节点顺序是正确的。
如果你需要修改这些假设,你需要调整这个程序。
原文地址: https://www.cveoy.top/t/topic/l0Q3 著作权归作者所有。请勿转载和采集!