gpt4 book ai didi

linq - 帮助递归 linq 表达式

转载 作者:行者123 更新时间:2023-12-01 13:06:21 24 4
gpt4 key购买 nike

我有一个数据库表,其中所有记录都相互链接,即类似于下图的内容:

alt text http://img691.imageshack.us/img691/6772/38103866.png

正如您在图中看到的那样,一条记录可以是根记录,并且可以有 1 个或多个子记录,其中每个子记录都在其 ParentID 属性中存储其父记录的 ID 属性。我想知道是否有人可以帮助我构建一个 LINQ 表达式,该表达式返回从最后一个子节点开始到根节点结束的所有节点。我的意思如下。从节点 4(ID = 4)开始,我必须向上移动到节点 2(ID = 2),然后是节点 1,然后是节点 0,从而跳过节点 3。我希望我足够清楚,但如果有什么需要澄清的,请让我知道。

最佳答案

这将完成工作:

static IEnumerable<Node> ListParents(IEnumerable<Node> list, int? ID)
{
var current = list.Where(n => n.ID == ID).FirstOrDefault();
if (current == null)
return Enumerable.Empty<Node>();
return Enumerable.Concat(new []{current}, ListParents(list, current.ParentID));
}

假设有一个 Node 类,如下所示:

class Node
{
public int ID;
public int? ParentID;
}

请注意,如果您的 ParentID 关系导致循环,则此函数将无限递归。

关于linq - 帮助递归 linq 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2907509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com