public List <Day> FindAllDays(Predicate <Day> predicate = null) { List <Day> resultDays = new List <Day>(); List <Day> days = (predicate == null) ? ChildElements : ChildElements.FindAll(predicate); //AsQueryable().Where(predicate) as List<RuleEntity>; if (days != null) { resultDays.AddRange(days); } foreach (DayFolder folder in Folders) { days = (predicate == null) ? folder.ChildElements : folder.FindAllDays(predicate);//Rules.AsQueryable().Where(predicate) as List<RuleEntity>; if (days != null) { resultDays.AddRange(days); } } return(resultDays); }