如何返回嵌套的父子集合 - C#

时间:2014-08-19 13:02:45

标签: c# observablecollection

我在示例代码段下面有示例。我希望该方法返回父子关系中的嵌套行。例如,我可以拥有3支球队E.G英格兰,巴西和加拿大,这些球队应该是顶级的父母。然后在每个团队下面,我可能会有类似下面的东西。

英国

  1. Jonh
  2. Ronney
  3. Gerarld
  4. 巴西

    • 汤姆
    • 内马尔
      • 列出项目1
      • 列出项目2
    • 亚历

    加拿大

    • 玩家1

    • Palyer 2

    尽可能地,特定的palyer也可以在其下面拥有子项。而那些儿童物品也可以有子子物品。

    当前问题

    我遇到的问题是以下代码只返回英格兰,其子项很好。它完全没有返回巴西和加拿大&我似乎无法弄明白为什么。

     public static ObservableCollection<ClubsAndPlayers> GetData()
        {
            ObservableCollection<ClubsAndPlayers> clubs = new ObservableCollection<ClubsAndPlayers>();
            DataTable dt = (DataTable)SessionApp.SessionManager.Session["dtMyTask"];
            ClubsAndPlayers parent = null;
            ClubsAndPlayers firstChild = null;
            ClubsAndPlayers secondChild = null;
            ClubsAndPlayers thirdChild = null;
    
            if (!Object.ReferenceEquals(dt, null))
            {
    
                if (dt.Rows.Count <= 0)
                {
                    parent = new ClubsAndPlayers("No Player Available ", "", "", "", "", null);
    
                }
                else
                {
                    for (var i = 0; i < dt.Rows.Count; i++)
                    {
                        string strTaskParentUID = Convert.ToString(dt.Rows[i]["TaskParentUID"]).Trim();
                        string strTaskID = Convert.ToString(dt.Rows[i]["TaskUID"]).Trim();
                        string strTaskName = Convert.ToString(dt.Rows[i]["TaskName"]);
                        string strTaskStartDate = Convert.ToString(dt.Rows[i]["TaskStartDate"]);
                        string strTaskEndDate = Convert.ToString(dt.Rows[i]["TaskEndDate"]);
                        int TaskOutlineLevel = Convert.ToInt32(dt.Rows[i]["TaskOutlineLevel"]);
    
                        if (i == 0 && TaskOutlineLevel == 1)
                        {
                            parent = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, null);
                        }
                        else
                        {
                            switch (TaskOutlineLevel)
                            {
                                case 2:
                                    firstChild = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, parent);
                                    if (parent.ID == strTaskParentUID)
                                    {
                                        parent.Items.Add(firstChild);
                                    }
                                    break;
                                case 3:
                                    secondChild = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, firstChild);
    
                                    if (firstChild.ID == secondChild.ParentId)
                                    {
                                        firstChild.Items.Add(secondChild);
                                    }
                                    break;
                                case 4:
                                    thirdChild = new ClubsAndPlayers(strTaskName, strTaskID, strTaskStartDate, strTaskEndDate, strTaskParentUID, secondChild);
                                    if (secondChild.ID == thirdChild.ParentId)
                                    {
                                        secondChild.Items.Add(thirdChild);
                                    }
                                    break;
                            }
                        }
                    }
                }
            }
    
            clubs.Add(parent);
            return clubs;
        }
    

0 个答案:

没有答案