在vb.net中对同一个arrayList进行顺序搜索

时间:2012-10-30 22:50:11

标签: vb.net arraylist sequential

Public Function Validate(updatedDetailList As List(Of DetailVO)) As Boolean
  Dim matchFound As Boolean = False

  For Each firstUpdatedDetail In updatedDetailList
    For Each nextUpdatedDetail In updatedDetailList
      If firstUpdatedDetail.PROD_ID.Equals(nextUpdatedDetail.PROD_ID) Then
        matchFound = True
      End If
    Next nextUpdatedDetail
  Next firstUpdatedDetail

  Return matchFound
End Function

我将updatedDetailList作为一个列表,我想迭代并获取当前和下一个对象值并比较这两个值。如果您在PROD_ID中找到相同的updatedDetailList,请将matchFound作为TRUE返回。

有没有办法在内部For循环中获取下一个对象。像...

For Each firstUpdatedDetail In **updatedDetailList**
  For Each nextUpdatedDetail In **updatedDetailList.Next**
    If firstUpdatedDetail.PROD_ID.Equals(nextUpdatedDetail.PROD_ID) Then
      matchFound = True
    End If
  Next nextUpdatedDetail
Next firstUpdatedDetail

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试执行不同的验证,因此updatedDetailList的每个项目都必须是唯一的。

不改变你的方法(即使用For循环),这里是代码:

For i = 0 to updatedDetailList.Count - 2
  If updatedDetailList(i).PROD_ID.Equals(updatedDetailList(i+1).PROD_ID) Then
    matchFound = True
    Exit For
  End If
Next

但有一种更快的方法来执行相同的操作 - 它使用LINQ:

Dim matchFound As Boolean = updatedDetailList.Distinct.Count <> updatedDetailList.Count