49 lines
1.2 KiB
C#
Raw Normal View History

2024-08-07 15:56:01 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DOAN.Common
{
public class Node
{
public int Id { get; set; }
public int? ParentId { get; set; }
}
public static class TreeNodeHelper
{
/// <summary>
/// 获取指定节点的所有后代节点。
/// </summary>
/// <param name="nodes">所有节点的集合。</param>
/// <param name="rootId">根节点的 ID。</param>
/// <returns>所有后代节点的列表。</returns>
public static List<Node> GetDescendants(List<Node> nodes, int rootId)
{
var descendants = new List<Node>();
void FindChildren(Node node)
{
var children = nodes.Where(n => n.ParentId == node.Id).ToList();
foreach (var child in children)
{
descendants.Add(child);
FindChildren(child);
}
}
var rootNode = nodes.FirstOrDefault(n => n.Id == rootId);
if (rootNode != null)
{
FindChildren(rootNode);
}
return descendants;
}
}
}