我有一个应用程序,允许用户从树结构中选择项目,然后将其传递给构建报告的方法。该项是最小的粒度级别,包含一个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; }
}
请注意,项目集可以包含其他项目集。此外,项目列表包括所有项目,包括儿童项目。我需要一种机制来检查项目是否仅存在于该级别。
更新
为了进一步说明,我添加了汇总的类图来说明Items,ItemSet和整个应用程序的关系/组成。这是一个遗留代码库,所以我没有太大的灵活性,必须做与大多数存在的东西。在partiular集合上调用getAllItems()
时,它会返回所有的死者,即使它是属于嵌套集的项目。我需要能够确定它是直接死者还是子集的子。
答案 0 :(得分:0)
foreach (var item in itemSet.getAllItems())
{
if (item.Parent == itemSet)
{
// Is child of itemSet
}
else
{
// Is descendant of nested itemSet
}
}