vb.net检查所有行包含值

时间:2018-09-10 06:30:02

标签: vb.net datatable dataset odbc

我是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”。我一整天都在尝试解决并进行搜索,但是找不到出路

1 个答案:

答案 0 :(得分:0)

我认为您要执行的工作是将部门与一组有权对数据库进行CRUD的部门交叉引用?

下面可以通过创建特权部门的集合并使用LINQ .Any()

检查该集合来实现此目的

P.S。可以通过使用String.Equals()StringComparison枚举来改善这一点。

P.P.S在使用Using类时使用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()

        Ifdepartments.Any(Function(t) t.Equals(department, StringComparison.InvariantCultureIgnoreCase)) Then
            MsgBox("True")
        Else
            MsgBox("False")
        End If
    Next