写linq查询sitemapnode

时间:2013-01-18 15:23:01

标签: c# c#-4.0 telerik

我想写一个查询smn.ParentNode.ChildNodes。如果ShowInNavigation值为false,我不想显示。 Telerik站点地图节点具有此att。何你这样做?

using System;
using System.Web;
using Telerik.Sitefinity.Web;
using System.Linq;
using System.Data;

public partial class CustomTemplate_Navigation : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {       
        SiteMapNode smn = SiteMapBase.GetCurrentProvider().CurrentNode;

        while (smn.ParentNode != null)
        {
            if (smn.ParentNode.ParentNode == SiteMap.RootNode)
            {               
                siteMapControl_verticaltree.DataSource = smn.ParentNode.ChildNodes;/*this line will be write query*/
                siteMapControl_verticaltree.DataBind();
                break;
            }

            smn = smn.ParentNode;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

类似的东西:

smn.ParentNode.ChildNodes.AsQueryable().Where(x => x.ShowInNavigation).ToList();

答案 1 :(得分:0)

你可以做这样的事情:(你不仅应该Linqify,还需要演员) (我在.NET MVC4项目中使用过它)

SiteMapNodeCollection coll = SiteMap.RootNode.ChildNodes;
IEnumerable<SiteMapNode> nodes = coll.Cast<SiteMapNode>();
var query = from node in nodes where Boolean.Parse(node["ShowInNavigation"]) == true select node;