循环查找父ID

时间:2016-03-11 16:45:06

标签: c# model-view-controller

在C#中是否可以执行循环来查找特定页面的父ID?

这是一个场景:我正在开发一个面包屑。对于每个页面,我需要父ID,因此我可以使用它来填充包含网址和页面标题的列表。

1st page --- Parent page --- Grandparent page

我需要能够做一个循环来收集父ID,然后这将填充经过的列表并找到新的父页面父ID(基本上是祖父母页面),然后填充列表直到没有不再了。

目前,当前页面数据存储在var pageInSiteMap

var overview = new List<PageDataModel>();
pageInSiteMap // A get command is used to place the data in here
if(pageInSiteMap != null && pageInSiteMap.ParentId.HasValue)
{
     var parent = allpages.Data.Items.FirstOrDefault(x => x.Id == pageInSiteMap.ParentId
     var parentEntry = new PageDataModel{
         pageUrl = parent.Url, pageTitle = parent.Title
     };
     overview.Add(parentEntry);
}

1 个答案:

答案 0 :(得分:1)

我将对此进行一次尝试并假设您需要递归,这是我写的一个简单示例:

public class Page
    {
        public int PageId { get; set; }

        public string PageTitle { get; set; }

        public Page Parent { get; set; }
    }

    public class Class1
    {
        public List<Page> GetPages(Page currentPage)
        {
            var ret = new List<Page> {currentPage};
            if(currentPage.Parent != null)
                ret.AddRange(GetPages(currentPage.Parent));
            return ret;
        } 
    }