Active Directory - Distribution List

I have the following code that gets the members of a distribution list but if there’s a another list within it I’d like to get the members from it too.

I’m new, I don’t know I could make it recursive.


Try
            Dim path As String = String.Empty
            path = "LDAP://...."

            Dim de As DirectoryEntry = New DirectoryEntry(path)
            Dim ds As DirectorySearcher = New DirectorySearcher(de)

            ds.PropertiesToLoad.Clear()
            ds.PropertiesToLoad.Add("member")
            ds.Filter = "CN=DL NAME"

            Dim results As SearchResultCollection
            results = ds.FindAll

            Dim result As SearchResult

            Dim members As String = ""

            For Each result In results
                For Each member As String In result.GetDirectoryEntry.Properties("member")

                    Dim selIndex As Integer = member.IndexOf("CN=") + 3
                    Dim selEnd As Integer = member.IndexOf("OU") - 3
                    members &= member.Substring(selIndex, selEnd).Replace("\\\\", "").Replace("\\", "").Replace(",", "") & vbCrLf

                Next
            Next

            Console.WriteLine(members)
            results.Dispose()

        Catch ex As Exception
            Console.WriteLine(ex.Message.ToString)
        End Try

this function will give you all the users


public static ArrayList GetAllUsers()
    {
        ArrayList _Users = new ArrayList();

        try
        {
            DirectoryEntry _DirectoryEntryRoot = new DirectoryEntry("LDAP://...");

            DirectorySearcher _DirectorySearcher = new DirectorySearcher(_DirectoryEntryRoot);
            _DirectorySearcher.PropertiesToLoad.Add("CN");
            _DirectorySearcher.PropertiesToLoad.Add("givenName");       // user first name
            _DirectorySearcher.PropertiesToLoad.Add("SN");              // user last name
            _DirectorySearcher.PropertiesToLoad.Add("mail");            // user email
            _DirectorySearcher.PropertiesToLoad.Add("SAMAccountName");  // user login name

            _DirectorySearcher.Filter = "(&(objectCategory=person)(objectClass=user))";

            foreach (SearchResult _SearchResult in _DirectorySearcher.FindAll())
            {
                _Users.Add(_SearchResult.Properties["CN"][0] + "(" + _SearchResult.Properties["SAMAccountName"][0] + ")");
            }

            _Users.Sort();            
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }

        return _Users;
    }

Here is the above function in VB


	Public Shared Function GetAllUsers() As ArrayList
		Dim _Users As New ArrayList()
		Try
			Dim _DirectoryEntryRoot As New DirectoryEntry("LDAP://...")
			Dim _DirectorySearcher As New DirectorySearcher(_DirectoryEntryRoot)
			_DirectorySearcher.PropertiesToLoad.Add("CN")
			_DirectorySearcher.PropertiesToLoad.Add("givenName")
			_DirectorySearcher.PropertiesToLoad.Add("SN")
			_DirectorySearcher.PropertiesToLoad.Add("mail")
			_DirectorySearcher.PropertiesToLoad.Add("SAMAccountName")
			_DirectorySearcher.Filter = "(&(objectCategory=person)(objectClass=user))"
			For Each _SearchResult As SearchResult In _DirectorySearcher.FindAll()
				_Users.Add(_SearchResult.Properties("CN")(0) + "(" + _SearchResult.Properties("SAMAccountName")(0) + ")")
			Next
			_Users.Sort()
		Catch e As Exception
			Console.WriteLine(e.Message)
		End Try
		Return _Users
	End Function