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,我需要向用户发出错误消息。(不是问题) 我的问题是检查这个的循环逻辑 我尝试了几种不同的方法,这就是我目前所拥有的,但并没有得到我想要的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
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等等,这个语句就不会出错。谢谢。这正是我所需要的,而且很有魅力。我以前从未用过字典。