Using C# to query entire tree system of pages looking for a particular attribute. Normally I would use a recursive technique, but then found this to be easier and more readable. Not sure how it is on performance, I think it’s supposed to be better. Found it here http://stackoverflow.com/questions/7062882/searching-a-tree-using-linq#answer-7063002
Here’s how I implmented
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |     public class MenuItem      {         public virtual string NavigationTitle { get; set; }         public virtual string Url { get; set; }         public virtual bool ShowInMainNavigation { get; set; }         public virtual bool ShowInFooterNavigation { get; set; }         public virtual IEnumerable Children { get; set; }         public virtual string TwitterHandle { get; set; }         public virtual string FacebookHandle { get; set; }         public virtual string InstagramHandle { get; set; }         public IEnumerable GetDescendants(MenuItem root)         {             var nodes = new Stack(new[] { root });             while (nodes.Any())             {                 MenuItem node = nodes.Pop();                 yield return node;                 foreach (var n in node.Children) nodes.Push(n);             }         }     } | 
Here’s how I used in Razor:
| 1 2 3 4 5 6 | <ul>  @foreach (YourSite.Models.Common.MenuItem navItem in Model.GetDescendants(Model).Where(x => x.ShowInFooterNavigation == true))  {   @Html.Partial("~/Views/Shared/NavLink.cshtml", navItem)   } </ul> | 
