我正试图在VB.net中完成以下工作:
' Create multidimensional array holding parents and childs
[100] Parent1
[101] Child1
[102] Child2
[200] Parent2
[201] Child1
[300] Parent3
[301] Child1
[302] Child2
[303] Child3
' Loop through multidimensional array
For Each Parent in Array
Print parent_id parent_name
For each Child in Parent
Print child_id child_name
Next
Next
然后,产出应是:
100 Parent1
101 Child1
102 Child2
200 Parent2
201 Child1
300 Parent1
301 Child1
302 Child2
303 Child3
我知道在BV.net中创建的一维数组如下:
Dim Parents As New Dictionary(Of Integer, String) From {
{100, "Parent1"},
{200, "Parent2"},
{300, "Parent3"}
}
但是,我想不出如何把这个扩展到同时容纳孩子们。
问题1:如何更新上面的数组以同时保存每个父项的子级?
每个循环都是用伪代码编写的。
问题2:如何循环多维数组以获得所需的输出?
发布于 2014-10-03 03:31:09
这不是一个非常有效的解决方案--它将每个家庭成员与其他每个家庭成员进行比较。但是,它可以满足您的需要,并且应该教您一些关于数组如何工作的知识。
Sub ShowFamily()
Dim strFamily(-1, -1) As String '0-based (indices start at zero). first index is the person, second index are the properties associated with the person
'(*, 0) = Person's name
'(*, 1) = Person's ID
'(*, 2) = Person's parent's ID
'1. Fill array with data
Call LoadFamily(strFamily)
'2. Go through the array looking for family members that have no parents
For i As Integer = 0 To strFamily.GetUpperBound(0)
If strFamily(i, 2) = "" Then
'3. Found a parent. Output their name
Debug.WriteLine(String.Format("{0} {1}", strFamily(i, 1), strFamily(i, 0)))
'4. Go through the array a second time, looking for this parent's children
For j As Integer = 0 To strFamily.GetUpperBound(0)
If strFamily(j, 2) = strFamily(i, 1) Then 'compare child's parent ID with parent's ID - do they match?
'found a match - output the child
Debug.WriteLine(String.Format(" {0} {1}", strFamily(j, 1), strFamily(j, 0)))
End If
Next j
End If
Next i
End Sub
Sub LoadFamily(ByRef strFamily(,) As String)
ReDim strFamily(9, 2) '9 members
strFamily(0, 0) = "Parent1"
strFamily(0, 1) = "100"
strFamily(0, 2) = "" 'no parent
'
strFamily(1, 0) = "Parent1Child1"
strFamily(1, 1) = "101"
strFamily(1, 2) = "100" 'Parent1
'
strFamily(2, 0) = "Parent1Child2"
strFamily(2, 1) = "102"
strFamily(2, 2) = "100" 'Parent1
'
strFamily(3, 0) = "Parent2"
strFamily(3, 1) = "200"
strFamily(3, 2) = "" 'no parent
'
strFamily(4, 0) = "Parent2Child1"
strFamily(4, 1) = "201"
strFamily(4, 2) = "200" 'Parent2
'
strFamily(5, 0) = "Parent3"
strFamily(5, 1) = "300"
strFamily(5, 2) = "" 'no parent
'
strFamily(6, 0) = "Parent3Child1"
strFamily(6, 1) = "301"
strFamily(6, 2) = "300" 'Parent3
'
strFamily(7, 0) = "Parent3Child2"
strFamily(7, 1) = "302"
strFamily(7, 2) = "300" 'Parent3
'
strFamily(8, 0) = "Parent3Child3"
strFamily(8, 1) = "303"
strFamily(8, 2) = "300" 'Parent3
'Add a third child to parent 1, to demonstrate that we are actually matching parents to children
strFamily(9, 0) = "Parent1Child3"
strFamily(9, 1) = "103"
strFamily(9, 2) = "100" 'Parent1
End Sub
https://stackoverflow.com/questions/26171163
复制相似问题