public T Find <T>(FindQueryFunc <T> queryFunc = null) where T : class { var tObj = this as T; if (tObj != null && (queryFunc == null || queryFunc(tObj) == true)) { return(tObj); } if (content == null) { return(null); } foreach (var obj in content) { var nestedResult = obj.Find(queryFunc); if (nestedResult != null) { return(nestedResult); } } return(null); }
public List <T> FindAll <T>(FindQueryFunc <T> queryFunc = null) where T : class { var found = new List <T> (); FindAll(queryFunc, found); return(found); }
void FindAll <T>(FindQueryFunc <T> queryFunc, List <T> foundSoFar) where T : class { var tObj = this as T; if (tObj != null && (queryFunc == null || queryFunc(tObj) == true)) { foundSoFar.Add(tObj); } if (content == null) { return; } foreach (var obj in content) { obj.FindAll(queryFunc, foundSoFar); } }