01 000 G1220 LC_CI_GEN L_CI_ILB PASS 101 000 G1220 LC_CO_COG END PASS 201 000 G1220 LC_CO_COG_EDA LC_CO_COG PASS 201 000 G1220 L_CI_ILB L_DBSPLIT_GEN PASS 101 000 G1220 L_DBSPLIT_GEN LC_CO_COG_EDA PAS
你可以使用以下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列表中,你将会得到从START到END的节点列表。在value1Nodes列表中,你将会得到所有Value为1的节点。在value2Nodes列表中,你将会得到所有Value为2的节点。你可以根据你的需求对这些列表进行进一步处理。
原文地址: http://www.cveoy.top/t/topic/i7lX 著作权归作者所有。请勿转载和采集!