vb.net проверить все строки содержат значение - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок в 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». Я пытался решить и погуглить весь день, но не могу найти выход

1 Ответ

0 голосов
/ 10 сентября 2018

Я думаю, что вы пытаетесь сделать перекрестную ссылку на отдел с набором отделов, которые имеют право на 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
...