我有两个列表,一个整数和一个字符串。这些值在循环期间输入,因此它们关联在一起(例如,ListOfInteger.Item(i)和ListOfString.Item(i)同时输入并且彼此相关)。我排序并随后颠倒了整数列表。有没有办法让字符串列表仍然与整数列表相关联,以便在文本框中显示它们。例如:
List of Strings (surname): List of Integers (score):
Jones 4
Perry 2
Morris 6
List of Strings (surname): Sorted List of Integers:
Jones 2
Perry 4
Morris 6
编辑:
If (name.Count + 1) < compnum Then
name.Add(txtName.Text)
score.Add(txtScore.Text)
Else
txtName.Text(Hide)
txtScore.Text(Hide)
btnSort.Text(Show)
End If
...
score.Sort()
score.Reverse()
txtSortedScore1.Text = score(0)
(and so forth)
如何将这两个列表关联在一起,以便将字符串列表中的数据与整数的排序列表相关联?
编辑 - 最终结果应如下所示:
List of Strings (surname): Sorted List of Integers:
Perry 2
Jones 4
Morris 6
答案 0 :(得分:1)
其他人建议使用容器类或字典的技术是更好的解决方案。但是,要回答所述的问题,您要做的是执行键控排序。不幸的是,Dim keysList As List(Of Int32) = New List(Of Integer)(New Int32() {4, 2, 6})
Dim itemsList As List(Of String) = New List(Of String)(New String() {"Jones", "Perry", "Morris"})
Dim keys As Int32() = keysList.ToArray
Dim items As String() = itemsList.ToArray
Array.Sort(keys:=keys, items:=items)
keysList = New List(Of Integer)(keys)
itemsList = New List(Of String)(items)
类不提供此功能;它由Array Class提供。
这有点令人费解,因为首先将两个列表转储到数组,对数组进行排序,最后使用排序结果重新创建列表。
image.src = "https://img.olx.pt/images_olxpt/880146485_1_1000x700_conjunto-de-sofs-terno-em-couro-verdadeiro-lisboa.jpg"
答案 1 :(得分:0)
你应该将你的字符串和整数包装在另一个对象中。
Class Person
Public String SurName
Public Int Score
End Class
从那里你可以以任何你喜欢的方式操纵你的对象,然后迭代它们并输出你想要的数据。
这样的事情:
Dim persons = New List(Of Person)()
persons.Add(New Person() With { _
Key .SurName = "Jones", _
Key .Score = 4 _
})
For Each p As var In persons.OrderBy(Function(x) x.Score)
ListBox.Add(p.SurName + p.Score)
Next
如果您愿意提供代码,我们可以为您提供更多帮助。
答案 2 :(得分:0)
名称的排序方式很少。这是一种方式:
Dim names = {"Jones", "Perry", "Morris"}, score = {4, 2, 6}
Dim sortedIndexes = Enumerable.Range(0, score.Length).OrderBy(Function(i) score(i)).ToArray ' { 1, 0, 2 }
Dim sortedNames = sortedIndexes.Select(Function(i) names(i)).ToList ' { "Perry", "Jones", "Morris" }
Dim sortedScore = sortedIndexes.Select(Function(i) score(i)).ToList ' { 2, 4, 6 }