gpt4 book ai didi

c# - 如何使用 LINQ 返回对象的祖先?

转载 作者:太空狗 更新时间:2023-10-29 22:17:49 25 4
gpt4 key购买 nike

我有一个 District 类,如下所示:

public class District
{
public int Id { get; set; }
public string Name { get; set; }
public District Parent { get; set; }
public IEnumerable<District> Ancestors { get { /* what goes here? */ } }
}

我希望能够获得每个地区祖先的列表。因此,如果区“1.1.1”是区“1.1”的子项,而区“1.1”又是区“1”的子项,则在区“1.1.1”上获取祖先将返回一个列表,其中包含名称为“1.1”的区对象”和“1”。

这是否涉及 yield return 语句(我从未完全理解)?可以一行完成吗?

最佳答案

如果一行足够长,一切都可以在一行中完成:)

在这种情况下,它可能最简单不是一行完成的:

public IEnumerable<District> Ancestors
{
get
{
District parent = Parent;
while (parent != null)
{
yield return parent;
parent = parent.Parent;
}
}
}

如果您想更好地理解 yield return,只需插入一个简短的插件 - 第一版 C# 深度学习的第 6 章仍然免费提供,这就是关于 C# 2 中的迭代器的所有内容。捕获它来自 first edition page .

关于c# - 如何使用 LINQ 返回对象的祖先?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824529/

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