This solved the problem
Private Function GetWhereUsedProduct(ByRef WhComp As String) As String
Dim Component As String = WhComp
dvBom.Sort = "WhComp"
Dim Stk As New Stack
Dim FoundRows() As DataRowView
Dim result As String
Dim stkItem As StackItem
FoundRows = dvBom.FindRows(Component)
If FoundRows.Length = 0 Then
Return "No Usages"
Else
For i As Integer = 0 To FoundRows.Length - 1
stkItem = New StackItem
stkItem.WHAssy = FoundRows(i).Item(1)
stkItem.WPD = FoundRows(i).Item(2)
Stk.Push(stkItem)
Next
End If
Do While Stk.Count > 0
stkItem = Stk.Pop
FoundRows = dvBom.FindRows(stkItem.WHAssy)
If FoundRows.Length = 0 Then
result += stkItem.WPD & ", "
Else
For j As Integer = 0 To FoundRows.Length - 1
stkItem = New StackItem
stkItem.WHAssy = FoundRows(j).Item(1)
stkItem.WPD = FoundRows(j).Item(2)
Stk.Push(stkItem)
Next
End If
Loop
Return result
End Function
End Class
#Region "Class: StackObject"
Public Class StackItem
Dim _WHAssy As String
Dim _WPD As String
Public Property WHAssy() As String
Get
Return _WHAssy
End Get
Set(ByVal GuiMethod As String)
_WHAssy = GuiMethod
End Set
End Property
Public Property WPD() As String
Get
Return _WPD
End Get
Set(ByVal GuiMethod As String)
_WPD = GuiMethod
End Set
End Property
End Class
#End Region