c# - 如何进行递归 LINQ 查询?

标签 c# linq recursion

我有一个递归数据结构,比如链表:

class Node
{
    private Node next;
    private int data;

    // (...)
    public Node Next
    {
        get
        {
            return next;
        }
    }

    public int Data
    {
        get
        {
            return data;
        }
    }
}

我想做一个 LINQ 查询,它从列表的头部开始,然后遍历元素,即时收集数据。如何做到这一点?

最佳答案

我使用了两个帮助程序类来解析 TreeView 控件中的所有节点。

yield 关键字是如何根据您的需要进行调整的,您可能会受到启发。

internal static IEnumerable<TreeNode> Descendants(this TreeNodeCollection c)
{
    foreach (var node in c.OfType<TreeNode>())
    {
        yield return node;

        foreach (var child in node.Nodes.Descendants())
        {
            yield return child;
        }
    }
}

例如:

var allCheckedNodes = myTreeView.Nodes.Descendants().Where(c => c.Checked);

关于c# - 如何进行递归 LINQ 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24821653/

相关文章:

c# - 使用 C# 在 Unity 中绘图

c# - HTTPS POST/GET 不适用于 Mono

c# - 如何从字符串列表中获取字符串?

c# - LINQ - 在父子层次结构中全选

c# - LINQ 表达式未被转换为 SQL

haskell - 具有递归和列表理解的质数生成器

java - 将值从内部递归方法传递到外部方法

java - 在树数据结构中添加节点时递归

c# - Entity Framework - 空列表

c# - UpdatePanel 中的按钮触发事件,但页面没有更新