我想根據同一行中另一個字段的值從VB中的數據表中選擇某個字段。從VB.net中的數據表中選擇條件
select error_message from table_errors where error_case="condition"
我怎麼做,如果我有我的SQL表中的VB一個DataTable填充:
在SQL中,它會很容易地通過編寫此查詢呢? 如何根據項目(「error_Case」)字段選擇數據表中的項目(「error_message」)?
任何幫助,將不勝感激
我想根據同一行中另一個字段的值從VB中的數據表中選擇某個字段。從VB.net中的數據表中選擇條件
select error_message from table_errors where error_case="condition"
我怎麼做,如果我有我的SQL表中的VB一個DataTable填充:
在SQL中,它會很容易地通過編寫此查詢呢? 如何根據項目(「error_Case」)字段選擇數據表中的項目(「error_message」)?
任何幫助,將不勝感激
您可以使用Linq-To-DataSet
:
Dim matchingRows As IEnumerable(Of DataRow) =
From row In table
Where row.Field(Of String)("error_case") = "condition"
如果你只是想一列(當然這工作也一步到位):
Dim errorMessages As IEnumerable(Of String) =
From row In matchingRows
Select row.Field(Of String)("error_message")
For Each error In errorMessages
Console.WriteLine(error)
Next
如果您希望它只是一行使用First
或Single
(如果存在多行,則會引發異常):
Dim error As String = errorMessages.First()
由於First
拋出一個異常,如果序列是空的,你可以使用FirstOrDefault
:
Dim error As String = errorMessages.FirstOrDefault() ' is null/Nothing in case of an empty sequence
所有在同一行(注意,這兩個LINQ和DataTable.Select
需要使用循環):
Dim ErrMessage As String = errorTable.AsEnumerable().
Where(Function(r) r.Field(Of String)("Error_Case") = TextCase.Text).
Select(Function(r) r.Field(Of String)("Error_Message")).
FirstOrDefault()
這裏是工作人員版本的粗略代碼
Dim connString As String = "select error_message from table_errors where error_case='condition'"
Dim conn As SqlClient.SqlConnection = New SqlClient.SqlConnection(connString)
conn.Open()
Dim cmd As SqlClient.SqlCommand = New SqlClient.SqlCommand(connString, conn)
Dim dTable As DataTable = New DataTable()
Dim dAdapter As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(cmd)
dAdapter.Fill(dTable)
conn.Close()
Dim text As String
Dim dReader As DataTableReader = dTable.CreateDataReader()
While dReader.Read()
text = dReader.GetValue(0)
End While
dReader.Close()
我試圖避免每次都將它鏈接到數據庫。我想加載一次,並能夠根據不同的條件通過行。試過這個http://urlpaste.com/PlKudP5a但它沒有工作。 – HelpASisterOut
爲select命令使用參數,這將更容易更改過濾器值(如果這是您需要的),或者從命令文本中一起排除條件,並將值與DataTable字段一起存儲在DataTable中,但是您需要在閱讀器中遍歷它並在error_case列上設置條件。 – Catalin
我其實試圖避免循環。我在代碼中需要多次,我正在尋找最短的方法來完成它。試過這個http://urlpaste.com/PlKudP5a但它沒有工作。 – HelpASisterOut
@HelpASisterOut:您認爲'DataTable.Select'不需要循環嗎?當然,它也必須循環所有的行,裏面沒有魔法。 –