Si te devuelve un DataSet, te devuelve al menos una tabla, porque un DataSet es un contenedor de tablas (y si mal no recuerdo contiene sólo tablas, cualquier duda ver
DataSet en MSDN).
Si ese método de devuelve un DataSet y no es usado por ninguna otro método, solamente contendrá la tabla leída, por lo que la propiedad DataSet.Tables.Count debería devolverte 1, y para acceder a ella, si no le has puesto nombre, simplemente sería
todosLosContactosBasico.Tables(0)
El código quedaría:
Código vb.net:
Ver originalDim contactos as New ArrayList
Dim persona as Contacto
For Each r As DataRow In todosLosContactosBasico.Tables(0).Rows
persona = New Contacto
persona.setnombre = Convert.ToString(r.Item("nombre"))
persona.setapellido = Convert.ToString(r.Item("apellido1"))
contactos.Add(persona)
Next