首页 > 解决方案 > vb.net 检查所有行是否包含值

问题描述

我是 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"结果语句总是错误的,这不应该是正确的,因为该行包含“CDE”。我试图解决和谷歌搜索一整天,但我找不到出路

标签: vb.netdatatabledatasetodbc

解决方案


我认为您要做的是将部门与有权对数据库进行 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

推荐阅读