首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在linq中从父ID中获取所有子元素和孙元素

在LINQ中,可以使用递归查询来从父ID中获取所有子元素和孙元素。以下是一个示例代码:

代码语言:csharp
复制
public class Node
{
    public int Id { get; set; }
    public int ParentId { get; set; }
    // 其他属性...
}

public static IEnumerable<Node> GetAllDescendants(IEnumerable<Node> nodes, int parentId)
{
    var descendants = nodes.Where(node => node.ParentId == parentId);
    foreach (var descendant in descendants)
    {
        yield return descendant;
        foreach (var child in GetAllDescendants(nodes, descendant.Id))
        {
            yield return child;
        }
    }
}

// 使用示例
var nodes = new List<Node>
{
    new Node { Id = 1, ParentId = 0 },
    new Node { Id = 2, ParentId = 1 },
    new Node { Id = 3, ParentId = 1 },
    new Node { Id = 4, ParentId = 2 },
    new Node { Id = 5, ParentId = 2 },
    new Node { Id = 6, ParentId = 3 },
    new Node { Id = 7, ParentId = 3 },
};

var parentId = 1;
var descendants = GetAllDescendants(nodes, parentId);
foreach (var descendant in descendants)
{
    Console.WriteLine(descendant.Id);
}

上述代码定义了一个Node类,表示树节点,其中包含IdParentId属性。GetAllDescendants方法使用递归查询,从给定的nodes集合中获取指定parentId的所有子元素和孙元素。使用示例中,我们创建了一个节点集合,并指定parentId为1,然后通过GetAllDescendants方法获取所有子元素和孙元素,并逐个打印出它们的Id

这种方法适用于树形结构的数据,可以灵活地获取任意节点的子元素和孙元素。在实际应用中,可以根据具体需求进行适当的修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券