以下是一个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 中的节点顺序是正确的。

如果你需要修改这些假设,你需要调整这个程序。

C#程序:将DataTable中的FROMNODE和TONODE连接并分类

原文地址: https://www.cveoy.top/t/topic/l0Q3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录