protected IEnumerable <FilterParenthood <Filter.Filter, Filter.Group> > VisitAllSubGroupFilters(Filter.Filter filter) { foreach (var f in filter.SubFilters()) { if (f is Filter.Group) { Filter.Group gf = (Filter.Group)f; yield return(new FilterParenthood <Filter.Filter, Filter.Group>(filter, gf)); } foreach (var f2 in VisitAllSubGroupFilters(f)) { yield return(f2); } } }
protected FilterParenthood <Filter.Filter, Filter.Group> GetDeepestGroupFilter(Filter.Filter filter) { foreach (var f in filter.SubFilters()) { var sgf = GetDeepestGroupFilter(f); if (sgf.child != null) { return(sgf); } if (f is Filter.Group) { Filter.Group gf = (Filter.Group)f; return(new FilterParenthood <Filter.Filter, Filter.Group>(filter, gf)); } } return(new FilterParenthood <Filter.Filter, Filter.Group>()); }