Vb.net 对于循环-某些情况下,我很难找到逻辑

Vb.net 对于循环-某些情况下,我很难找到逻辑,vb.net,Vb.net,我需要在一个表中循环,检查是否有4行的特定列包含1-4个值 表格示例: |cty|st|val| |03 | 23 | 1| |03 | 23 | 2| |03 | 23 | 3| |03 | 23 | 4| 我需要检查列val是否包含1-4个值。该表将始终按val ASC排序,但该表可能并不总是包含所有4个值。如果此表中没有1-4,我需要向用户发出错误消息。(不是问题) 我的问题是检查这个的循环逻辑 我尝试了几种不同的方法,这就是我目前所拥有的,但并没有得到我想要的 For i As Inte

我需要在一个表中循环,检查是否有4行的特定列包含1-4个值

表格示例:

|cty|st|val|

|03 | 23 | 1|

|03 | 23 | 2|

|03 | 23 | 3|

|03 | 23 | 4|

我需要检查列val是否包含1-4个值。该表将始终按val ASC排序,但该表可能并不总是包含所有4个值。如果此表中没有1-4,我需要向用户发出错误消息。(不是问题)

我的问题是检查这个的循环逻辑

我尝试了几种不同的方法,这就是我目前所拥有的,但并没有得到我想要的

For i As Integer = 1 To 4 Step 1
    For Each dr As DataRow In dt.Rows

        'if not all 4 growing season per county are entered, show error message
        If i <> dr("grows") Then

            FillErrorResultObject("ERROR00139", "", "", strCountyName, "", "", "", "", "", dtErrorTable, objErrorResult)
            blnError = True
            Exit For

        End If

    Next
    If blnError = True Then Exit For
Next
对于i As Integer=1到4步骤1
对于dt.行中的每个dr As数据行
'如果没有输入每个县的所有4个生长季节,则显示错误消息
如果我长大了,那么
FillErrorResultObject(“ERROR00139”,“”,“”,“”,strCountyName,“”,“”,“”,“”,“”,“”,dtErrorTable,objErrorResult)
bln错误=True
退出
如果结束
下一个
如果blnError=True,则退出以获取
下一个

****EDIT—“我的示例”表中的“val”与代码示例中的“growth”列相同。我想我还是原封不动,只需添加此注释。

因为您需要知道表中是否存在所有四个值,所以需要跟踪这四个值以查看它们是否存在。您可以使用字典进行以下操作:

Dim d As New Dictionary(Of Integer, Boolean)
For i As Integer = 1 To 4
  d.Add(i, False)
Next

For Each dr As DataRow In dt.Rows
  Dim v As Integer = Convert.ToInt32(dr("Grows"))
  If d.ContainsKey(v) Then
    d(v) = True
  End If
Next

Dim showError As Boolean = False
For Each kvp As KeyValuePair(Of Integer, Boolean) In d
  If Not kvp.Value Then
    showError = True
  End If
Next
If showError Then
  MessageBox.Show("Error")
End If

如果dr(“growth”)<0或dr(“growth”)>4,那么会不会出现错误…?摆脱
i
循环。我需要确保growth的所有值都是1、2、3、4。如果我只有1和2,或者1、2和3等等,这个语句就不会出错。谢谢。这正是我所需要的,而且很有魅力。我以前从未用过字典。