/// <summary>
        /// Executes the query specified by the expression parameter.
        /// </summary>
        /// <typeparam name="T">Type for the result objects.</typeparam>
        /// <param name="expression">Expression representing the query.</param>
        /// <returns>Query results.</returns>
        public IEnumerator <T> ExecuteQuery <T>(Expression expression)
        {
            CheckDisposed();

            if (expression == null)
            {
                throw new ArgumentNullException("expression");
            }

            CamlQuery query = CamlQuery.Parse(expression, false);

            return(query.Execute <T>().GetEnumerator());
        }