【发布时间】:2013-07-11 16:44:16
【问题描述】:
假设我们有一个具有以下属性的实体:
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
孩子是具有非空 ParentId 的任何 Foo。可以有多个级别的父/子关系,此时最多为 5 个。
是否有一种简单的 LINQ 方式或通用方法可以从 Foo 开始并获取其所有子项、其子项的子项、以及子项的子项的子项等?
目前,我正在遍历初始父项的每个子项,然后再次循环以获取该子项的所有子项,等等。这很乏味,而且似乎不是完成我想要的正确方法。
【问题讨论】:
-
你这里有一些查找表来获取孩子吗?听起来你想要一个给定的“父母”
Foo并获得它的孩子,但是没有获得孩子的机制。您在此处拥有的数据模型允许我们将树向上爬到父级,但不能遍历向下它。 -
我只有一张桌子,Foo。给定一个 Foo 对象,为了得到它的子对象,我查询所有具有 ParentId = x 的 Foo。然后,对于这些孩子中的每一个,我查询 ParentId = 前一个父母的孩子的 ID,等等。我需要更改什么以包含一种机制,使我能够简化获取所有孩子及其孩子的过程?
-
对不起,我忽略了这是使用实体框架。
标签: c# asp.net-mvc linq entity-framework