api 入門 テンプレート - Umbraco 4.6+ - C#でdoctypeですべてのノードを取得するには?





2 Answers

最終的に特定のタイプのノードが2つしか必要ないと仮定した場合、yieldキーワードを使用すると、より多くの検索を避けることがより効率的になります。

public static IEnumerable<INode> GetDescendants(this INode node)
{
    foreach (INode child in node.ChildrenAsList)
    {
        yield return child;

        foreach (INode grandChild in child.GetDescendants())
        {
            yield return grandChild;
        }
    }
    yield break;
}

したがって、タイプによってノードを取得する最後の呼び出しは次のようになります。

new Node(-1).GetDescendants().Where(x => x.NodeTypeAlias == "myNodeType")

したがって、最初の5つだけを取得したい場合は、.Take(5)を最後に追加して、ツリー全体を取り出すのではなく、最初の5つの結果を再帰的に実行します。

インストール cms asp

Umbraco 4.6+を使用すると、C#で特定のdoctypeのすべてのノードを取得する方法はありますか? 私はumbraco.NodeFactory名前空間を見てきましたが、まだ何も見つかっていません。




マクロ(Umbraco 4.7以降)で使用するためのカミソリスクリプトファイルを作成している場合は、この短縮形が特に便利です...

var nodes = new Node(-1).Descendants("DocType").Where("Visible");

これが誰かを助けることを願っています!




Related


Tags

c#   api   umbraco