【发布时间】:2016-08-06 18:58:05
【问题描述】:
我有一个具有以下属性的类:
- int ID
- 整数?家长 ID
- 布尔?需求展示
我有一个这些对象的列表,该列表代表多个层次结构:ID 是键值,而 ParentID 充当外键。 NeedsShowing 仅在每个层次结构的根级别填充,这意味着它仅在 ParentID == null 时出现。
我需要完成的——最好使用最简单的 LINQ——只选择列表中的那些层次结构,其中NeedsShowing == true(基本上应用过滤器)。
列表中有大约 50,000 个对象,代表大约 13,000 个层次结构。
代码
Public Class FileHierarchy
{
int ID { get; set; }
int? ParentID { get; set; }
bool? NeedsShowing { get; set; }
}
具有值的 FileHierarchy 类列表:
ID ParentID NeedsShowing
----------------------------------
1 null true
2 1 null
3 1 null
4 2 null
5 null false
6 5 null
7 6 null
8 null true
9 8 null
这意味着我有三个层次结构,根节点 ID 为 1、5、8(其中parent ID == null)。我只想获取根 ID 为 1 和 8 的层次结构中的所有节点,因为根 ID 5 具有 NeedsShowing == false。
【问题讨论】:
-
您说“获取层次结构”是什么意思?您想要所有这些层次结构中所有节点的列表,根列表吗?
-
@Stephen:我试图获取 NeedsShowing == true 的对象列表,但它只返回每个层次结构的根对象。不应该在那里使用。不知何故,我需要从列表中构建层次结构,但我不知道如何。
-
Servy:我的意思是获取所有节点:根节点+层次树中根节点有NeedsShowing == true的所有子节点。
-
我认为您应该为您的类添加代码,至少是它们的属性,以及您尝试对其运行查询的列表。