【发布时间】:2017-10-22 14:15:12
【问题描述】:
我有一个应用程序,它允许用户从树结构中选择项目,然后将这些项目传递给构建报告的方法。 item 是最小的粒度级别,包含一个 id 值。我需要生成一个可枚举的对象,该对象可用于生成汇总级别报告和单个项目报告。例如,下图显示了树和愿望报告结构。
我需要的是能够识别或标记需要单独打印的项目。换句话说,如果在任何子组中都找不到项目,则将其标记为需要打印个人。这很重要,因为该项目可能存在于多个分组中。如何解析树并检查该项目是否存在于子节点中?
Item 和 ItemSet(groups) 类如下:
public class Item
{
public int Property1 { get; set; }
public int Property2 { get; set; }
public int Property3 { get; set; }
public int Property4 { get; set; }
}
public class ItemSet
{
public List<Item> Items { get; set; }
//.
//.
//.
//.
public List<ItemSet> ItemSets { get; set; }
}
请注意,一个项目集可以包含其他项目集。此外,项目列表包括所有项目,包括子项目。我需要一种机制来检查该项目是否仅存在于该级别。
更新
为了进一步澄清,我添加了总结类图来说明项目、项目集和整个应用程序的关系/组成。这是一个遗留代码库,所以我没有太大的灵活性,必须凑合与大部分存在的东西。当getAllItems() 在一个特定集合上被调用时,它会返回它的所有后代,即使它是属于嵌套集合的一个项目。我需要能够确定它是直接死者还是子集的孩子。
【问题讨论】:
-
您似乎在问题中混淆了许多不同的术语,这使得很难理解。什么是井,与
Item有什么关系?什么是ItemSet,它与组有什么关系?您认为子节点是什么?它与井、Item、组或ItemSet有什么关系? -
对不起,井是一个项目。项目存在于 ItemSet 中,这也是我在树中调用的组或节点。我会澄清的。
-
您是否在示例中显示任何需要标记的项目?你怎么知道它们的存在?
-
我会更新帖子以澄清我在处理什么。