2013-01-18 76 views
-1

我想寫查詢smn.ParentNode.ChildNodes。如果ShowInNavigation的值爲false,我不想顯示。 Telerik站點地圖節點有這個att。何這樣做?寫linq查詢sitemapnode

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; 
     } 
    } 
} 
+0

是的childNodes ParentNode的屬性。你爲什麼想在查詢中寫入? –

+0

可見一些showInNavigation節點的值爲false的節點。 – temp

+0

你能告訴我們什麼節點的childNodes的 –

回答

0

是這樣的:

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

錯誤「System.Web.SiteMapNodeCollection」不包含「去哪兒」的定義,並沒有擴展方法「在哪裏」接受一個類型的第一個參數「System.Web.SiteMapNodeCollection類型'可以找到(你是否缺少使用指令或程序集引用?) – temp

+0

@temp - 你必須用'AsQuerable()'作爲上面的代碼。 – Hogan

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;