示例#1
0
        /// <summary>
        ///		Get first (chronologically) descendant at the specified level
        /// </summary>
        /// <param name="level">
        ///		Level at which to find descendant. Must point to a descendant (i.e. be less than <code>this.Level</code> and greater or
        ///		equal to zero (which is leaf level).
        /// </param>
        /// <param name="backwards">
        ///		Whether to find oldest (<see langword="false"/>) or newest (<see langword="true"/>) descendant.
        /// </param>
        /// <returns>
        ///		First descendant at <paramref name="level"/> or <see langword="null"/> if none exists.
        /// </returns>
        public IDataFolder GetFirstDescendant(int level, bool backwards)
        {
            RequireDescendant(level);

            IDataFolder descendant = GetFirstChildFolder(backwards);

            if (descendant != null && level < (this.Level - 1))
            {
                descendant = descendant.GetFirstDescendant(level, backwards);
            }
            else if (level == (this.Level - 1))
            {
                // reached target level
                return(descendant);
            }
            return(null);
        }