Множество вещей, которые мы можем улучшить здесь:
Public Iterator Function GetVillage(ByVal villageName As String) As IEnumerable(Of String)
Using conn As New SqlConnection("Server=MINTOY_DEV\MIGSSERVER;Database=SouthLinkDBO;User=sa;Pwd=123;"), _
cmd As New SqlCommand("getVillageName", conn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@village", SqlDbType.VarChar, 50).Value = villageName
conn.Open()
Using rdr As SqlDataReader = cmd.ExecuteReader()
While reader.Read()
Yield DirectCast(reader("value"), String)
End While
End Using
End Using
End Function
Главное, что мы фактически возвращаем значение (Yield
обрабатывает это для Iterator
функций).
Если вам действительно нужен фактический List(Of String)
(Подсказка: вы обычно этого не делаете; ваш код почти всегда будет работать намного лучше, если вы упорядочите вещи для работы с IEnumerable(Of T)
для как можно дольше) вы можете добавить .ToList()
при вызове этого метода.