我需要遍历一个表并检查是否有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
****编辑 - &#39; val&#39;在我的示例表中,与“增长”相同的列在代码示例中。我想把它保留原样,然后添加这个评论。
答案 0 :(得分:1)
由于您需要知道表中是否存在所有四个值,因此您需要跟踪这四个值以查看它们是否存在。您可以使用字典:
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