如何进行递归LINQ查询?

惊吓

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

class Node
{
    private Node next;
    private int data;

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

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

我想进行一个LINQ查询,它从列表的开头开始,然后遍历所有元素,即时收集数据。怎么做?

年份

仅通过简单的LINQ查询就很难遍历任意复杂的数据结构。在某些时候,您必须“减少损失”并自己编写迭代器块-可能仅适用于标准LINQ难以表达的部分。

也就是说,对于您的链表示例,使用moreLinq,您可以执行以下操作:

MoreEnumerable.Generate(head, node => node.Next)
              .TakeWhile(node => node != null)

如果要递归LINQ树遍历(或类似的遍历),那会大不相同,但是这里有一个示例(深度优先):

private static IEnumerable<Node> GetNodeAndDescendants(Node node)
{
   return new[] { node }.Concat(node.Children.SelectMany(GetNodeAndDescendants));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何进行“ for循环”递归

来自分类Dev

如何进行无限递归?

来自分类Dev

如何进行单个查询

来自分类Dev

如何进行复杂的查询

来自分类Dev

用Elixir递归如何进行for循环?

来自分类Dev

如何进行适当的SQL递归?

来自分类Dev

Clojure:如何进行基本递归?

来自分类Dev

如何进行正切递归?

来自分类Dev

如何进行jQuery媒体查询?

来自分类Dev

如何进行django模型查询

来自分类Dev

Django-如何进行此查询

来自分类Dev

Mongoosastic,如何进行地理距离查询

来自分类Dev

mysql如何进行这样的查询

来自分类Dev

如何进行高级搜索查询?

来自分类Dev

如何进行此SQL查询?

来自分类Dev

我如何进行此查询

来自分类Dev

GraphQL 如何进行关系查询?

来自分类Dev

如何进行正确的 UPDATE 查询?

来自分类Dev

如何进行快速查询

来自分类Dev

如何动态进行递归查询?

来自分类Dev

对递归以及如何进行退货打印感到困惑

来自分类Dev

DFS递归解决问题是如何进行的?

来自分类Dev

难以理解此Sudoku Solver如何进行递归

来自分类Dev

递归层次结构-使用Linq进行递归查询

来自分类Dev

递归层次结构-使用Linq进行递归查询

来自分类Dev

如何进行转换SQL内部连接查询与实体框架

来自分类Dev

rethinkdb-如何进行嵌套“组”查询

来自分类Dev

如何进行Active Record查询以允许按价值查找

来自分类Dev

如何进行Facebook FQL查询以选择所有朋友