/// <summary>
        /// Execute general search of active directory and return the results
        /// in the form of an ExecuteResult struct. Optional parameter to specify the
        /// location to search in.
        /// </summary>
        /// <param name="filterString">string, LDAP formatted filter</param>
        /// <param name="returnCollection">boolean, true if result will be a collection. false, if result is single item</param>
        /// <param name="connPrefix">Optional parameter, specified distinguished name to search within</param>
        /// <returns></returns>
        private ExecuteResult ExecuteSearch(string filterString, bool returnCollection, string connPrefix = null)
        {
            ExecuteResult execResult = new ExecuteResult();

            execResult.singleResult     = null;
            execResult.collectionResult = null;
            bool errFlag = false;

            DirectoryEntry entry;

            if (connPrefix == null)
            {
                entry = new DirectoryEntry(connectionPrefix);
            }
            else
            {
                entry = new DirectoryEntry("LDAP://" + connPrefix);
            }

            DirectorySearcher mySearcher = new DirectorySearcher(entry);

            mySearcher.Filter = filterString;

            if (returnCollection)
            {
                SearchResultCollection CollectionResult = null;

                try
                {
                    CollectionResult = mySearcher.FindAll();
                }
                catch (Exception e)
                {
                    errFlag = true;
                    //Console.Write("search error. " + e.Message); //log file for errors
                }

                execResult.collectionResult = CollectionResult;
            }
            else
            {
                SearchResult singleResult = null;
                try
                {
                    singleResult = mySearcher.FindOne();
                }
                catch (Exception e)
                {
                    errFlag = true;
                    //Console.Write("search error. " + e.Message); //log file for errors
                }

                execResult.singleResult = singleResult;
            }

            execResult.error = errFlag;

            entry.Close();
            entry.Dispose();
            mySearcher.Dispose();

            return(execResult);
        }
        /// <summary>
        /// Execute general search of active directory and return the results 
        /// in the form of an ExecuteResult struct. Optional parameter to specify the 
        /// location to search in.
        /// </summary>
        /// <param name="filterString">string, LDAP formatted filter</param>
        /// <param name="returnCollection">boolean, true if result will be a collection. false, if result is single item</param>
        /// <param name="connPrefix">Optional parameter, specified distinguished name to search within</param>
        /// <returns></returns>
        private ExecuteResult ExecuteSearch(string filterString, bool returnCollection, string connPrefix = null)
        {
            ExecuteResult execResult = new ExecuteResult();
            execResult.singleResult = null;
            execResult.collectionResult = null;
            bool errFlag = false;

            DirectoryEntry entry;
            if (connPrefix == null)
            {
                entry = new DirectoryEntry(connectionPrefix);
            }
            else
            {
                entry = new DirectoryEntry("LDAP://" + connPrefix);
            }

            DirectorySearcher mySearcher = new DirectorySearcher(entry);

            mySearcher.Filter = filterString;

            if (returnCollection)
            {
                SearchResultCollection CollectionResult = null;

                try
                {
                    CollectionResult = mySearcher.FindAll();
                }
                catch (Exception e)
                {
                    errFlag = true;
                    //Console.Write("search error. " + e.Message); //log file for errors
                }

                execResult.collectionResult = CollectionResult;

            }
            else
            {
                SearchResult singleResult = null;
                try
                {
                    singleResult = mySearcher.FindOne();
                }
                catch (Exception e)
                {
                    errFlag = true;
                    //Console.Write("search error. " + e.Message); //log file for errors
                }

                execResult.singleResult = singleResult;
            }

            execResult.error = errFlag;

            entry.Close();
            entry.Dispose();
            mySearcher.Dispose();

            return execResult;
        }