我是 VB.Net 的新手。最近我想检查该行是否包含值,如果包含,则返回true,如果不包含,则包含false。
想象一下这是我的餐桌电话员工
DEPARTMENT NAME
-------------------
ABC AAA
CDE BBB
EFG CCC
根据我在 PHP 中的了解,我们可以使用它从行中获取所有值。
while( $row = mysqli_fetch_array($query) ){
if($row['DEPARTMENT'] == "CDE"){
echo "True";
}
else {
echo "False";
}
}
这是我在 VB.NET 中的代码
Dim da As Odbc.OdbcDataAdapter
Dim ds As DataSet
Dim dt As DataTable
da = New Odbc.OdbcDataAdapter("SELECT * FROM employee", Connection)
ds = New DataSet
da.Fill(ds, "employee")
dt = ds.Tables("employee")
For Each row As DataRow In dt.Rows
If (row("DEPARTMENT") = "ABC") Then
MsgBox("True")
Else
MsgBox("False")
End If
Next
主要问题是,如果我尝试获取第一条记录,则该语句是否有效。但是当我尝试获取记录号 2 时,例如row("DEPARTMENT") = "CDE"
结果语句始终为 false,这不应该正确,因为该行包含“CDE”。我试图解决并谷歌搜索一整天,但我找不到出路
我认为您要做的是将部门与有权对数据库进行 CRUD 的部门集合进行交叉引用?
下面可以通过创建特权部门的集合并使用 LINQ 检查该集合来实现这一点.Any()
。
PS 这可以通过使用String.Equals()
和StringComparison
枚举来改进。
PPSUsing
在使用IDisposable
类时使用语句。
Dim departments As List(Of String) = New List(Of String) From {
"ABC",
"CDE"
}
Dim da As Odbc.OdbcDataAdapter
Dim ds As DataSet
Dim dt As DataTable
da = New Odbc.OdbcDataAdapter("SELECT * FROM employee", Connection)
ds = New DataSet
da.Fill(ds, "employee")
dt = ds.Tables("employee")
For Each row As DataRow In dt.Rows
Dim department = row("DEPARTMENT").ToString()
If departments.Any(Function(t) t.Equals(department, StringComparison.InvariantCultureIgnoreCase)) Then
MsgBox("True")
Else
MsgBox("False")
End If
Next
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句