从父子关系中获取Sitecore项目中的所有子项

Kam*_*ran 1 sitecore

以下代码应返回列表中的所有子项和子项,但它不保持父子关系的顺序.它首先返回所有父项,然后返回所有子项.

有可能以某种方式保持项目的顺序,并按照与Sitecore相同的顺序将它们放入列表中吗?

MainItem 包含父子关系中的项目:

Item mainItem= Sitecore.Context.Database.GetItem(Settings.GetSetting("MainItem"));
mainItem.Axes.GetDescendants().ToList();
Run Code Online (Sandbox Code Playgroud)

Mar*_*ies 6

您可以递归地向列表添加项目:

public void AppendItems(List<Item> itemList, Item item)
{
    foreach(Item childItem in item.Children)
    {
        itemList.Add(childItem);
        AppendItems(itemList, childItem);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var list = new List<Item>();
list.Add(rootItem);
AppendItems(list, rootItem);
Run Code Online (Sandbox Code Playgroud)