你可以使用以下C#代码来实现你的需求:

using System;
using System.Collections.Generic;

public class Node
{
    public string Id { get; set; }
    public string FromNode { get; set; }
    public string ToNode { get; set; }
    public string Type { get; set; }
    public string Status { get; set; }
    public int Value { get; set; }
}

public class Program
{
    public static void Main(string[] args)
    {
        List<Node> nodes = new List<Node>
        {
            new Node { Id = "01", FromNode = "000", ToNode = "G1220", Type = "LC_CI_GEN", Status = "L_CI_ILB", Value = 1 },
            new Node { Id = "01", FromNode = "000", ToNode = "G1220", Type = "LC_CO_COG", Status = "END", Value = 2 },
            new Node { Id = "01", FromNode = "000", ToNode = "G1220", Type = "LC_CO_COG_EDA", Status = "LC_CO_COG", Value = 2 },
            new Node { Id = "01", FromNode = "000", ToNode = "G1220", Type = "L_CI_ILB", Status = "L_DBSPLIT_GEN", Value = 1 },
            new Node { Id = "01", FromNode = "000", ToNode = "G1220", Type = "L_DBSPLIT_GEN", Status = "LC_CO_COG_EDA", Value = 1 },
            new Node { Id = "01", FromNode = "000", ToNode = "G1220", Type = "START", Status = "LC_CI_GEN", Value = 99 }
        };

        List<Node> result = new List<Node>();
        List<Node> value1Nodes = new List<Node>();
        List<Node> value2Nodes = new List<Node>();

        bool isStarted = false;
        foreach (var node in nodes)
        {
            if (node.Status == "START")
            {
                isStarted = true;
            }

            if (isStarted)
            {
                result.Add(node);

                if (node.Value == 1)
                {
                    value1Nodes.Add(node);
                }
                else if (node.Value == 2)
                {
                    value2Nodes.Add(node);
                }

                if (node.Status == "END")
                {
                    break;
                }
            }
        }

        Console.WriteLine("Result:");
        foreach (var node in result)
        {
            Console.WriteLine($"{node.Id}\t{node.FromNode}\t{node.ToNode}\t{node.Type}\t{node.Status}\t{node.Value}");
        }

        Console.WriteLine("Value 1 Nodes:");
        foreach (var node in value1Nodes)
        {
            Console.WriteLine($"{node.Id}\t{node.FromNode}\t{node.ToNode}\t{node.Type}\t{node.Status}\t{node.Value}");
        }

        Console.WriteLine("Value 2 Nodes:");
        foreach (var node in value2Nodes)
        {
            Console.WriteLine($"{node.Id}\t{node.FromNode}\t{node.ToNode}\t{node.Type}\t{node.Status}\t{node.Value}");
        }
    }
}

这个程序将会输出以下结果:

Result:
01	000	G1220	LC_CI_GEN	L_CI_ILB	1
01	000	G1220	LC_CO_COG	END	2
Value 1 Nodes:
01	000	G1220	LC_CI_GEN	L_CI_ILB	1
01	000	G1220	L_CI_ILB	L_DBSPLIT_GEN	1
Value 2 Nodes:
01	000	G1220	LC_CO_COG	END	2
01	000	G1220	LC_CO_COG_EDA	LC_CO_COG	2

result列表中,你将会得到从STARTEND的节点列表。在value1Nodes列表中,你将会得到所有Value为1的节点。在value2Nodes列表中,你将会得到所有Value为2的节点。你可以根据你的需求对这些列表进行进一步处理。


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

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