它如何使用子列表(在 vb.net 中)。
我有一个项目清单。每个 Item 都包含 Item2 的列表。我需要对 Item.ListOf(Item2).value 包含“ValueX”的位置进行排序。
样本 :
Dim myList As New List(Of Niveau1)
For i As Integer = 1 To 3
Dim niv1 As New Niveau1(i)
For j As Integer = i To i + 1
niv1.listOfNiveau2.Add(New Niveau2(j))
Next
myList.Add(niv1)
Next
Class Niveau1
Public id As Integer
Public listOfNiveau2 As List(Of Niveau2)
Public Sub New(ByVal id As Integer)
Me.listOfNiveau2 = New List(Of Niveau2)
Me.id = id
End Sub
End Class
Class Niveau2
Public id As Integer
Public value As String
Public Sub New(ByVal id As Integer)
Me.id = id
Me.value = String.Format("Value{0}", id Mod 3)
End Sub
End Class
实际结果是 listOf(Niveau1)
我需要对列表(mylist)进行排序。结果将首先放置每个项目 Niveau1,其中 listOfNiveau2 包含一个项目,其中 value = "Value0",然后是所有其他项目。
结果应该是这个列表:
Item 1 :
id = 2
listOfNiveau2 =
{ id = 2, value = "Value1" }
{ id = 3, value = "Value0" }
Item 2 :
id = 3
listOfNiveau2 =
{ id = 3, value = "Value0" }
{ id = 4, value = "Value1" }
Item 3 :
id = 1
listOfNiveau2 =
{ id = 1, value = "Value1" }
{ id = 2, value = "Value2" }
第一项和第二项包含“Value0”它的子列表,这就是为什么他们首先在列表中。我们在它们之后添加所有其他项目。在这个示例中,我们只剩下 1 个项目。
如果我们想要字符串“Value2”而不是“Value0”。结果应该是:
Item 1 :
id = 1
listOfNiveau2 =
{ id = 1, value = "Value1" }
{ id = 2, value = "Value2" }
Item 2 :
id = 2
listOfNiveau2 =
{ id = 2, value = "Value1" }
{ id = 3, value = "Value0" }
Item 3 :
id = 3
listOfNiveau2 =
{ id = 3, value = "Value0" }
{ id = 4, value = "Value1" }
因为 id=1 的项目是唯一一个包含 listOfNiveau2 的项目,其中包含值“Value2”