Итак, я пишу VB.Net, который использует LINQ для доступа к базе данных.Есть одна часть программы, в которой у меня возникли проблемы с выяснением, как получить доступ к столбцу в таблице, когда оба значения передаются как переменные.
Сейчас у меня есть настройка с использованием SqlConnection
строк иSqlDataAdapters
, чтобы выполнить работу, но это буквально единственный сегмент моего кода, который использует этот синтаксис, и это чертовски беспокоит меня.Я хотел бы выяснить, как изменить код на формат LINQ, чтобы кодовая база стала более сплоченной.
Это сегмент кода, который у меня сейчас есть:
Public Function GetColumnFromTable(col As String, tbl As String) As AutoCompleteStringCollection
Dim source As New AutoCompleteStringCollection
Dim conn As New SqlConnection("my connection string")
Try
conn.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
Return source
End Try
Dim query As New SqlCommand("SELECT " + col + " FROM " + tbl + "", conn)
Dim dataSource As New DataTable
Dim adapter As New SqlDataAdapter(query)
adapter.Fill(dataSource)
For i = 0 To dataSource.Rows.Count - 1
source.Add(dataSource.Rows(i)(field).ToString())
Next
conn.Close()
Return source
End Function
Код предназначен для извлечения строк из определенного столбца в таблице и установки для них значения AutoCompleteStringCollection
, используемого в качестве автозаполнения для текстовых полей в графическом интерфейсе.Я хотел бы иметь возможность изменить его на что-то вроде этого.
Public FUnction GetColumnFromTable(col As String, tbl As String) As AutoCompleteStringCollection
Dim source As New AutoCompleteStringCollection
Dim query = From tbl Select col
query.ToList().ForEach(Function(x) source.Add(x))
End Function
Я бы хотел что-то вроде приведенного выше кода, который действительно работает, но я не знаю, как это сделать.