嗯,我真的不知道这是不是二维列表,但无论如何我都会问。
所以我有这个:
Dim list = New List(Of KeyValuePair(Of String, Integer))
list.Add(New KeyValuePair(Of String, Integer)("Tony", 16))
list.Add(New KeyValuePair(Of String, Integer)("George", 19))
我怎样才能从“Tony”中获得价值?还是“乔治”?
答案 0 :(得分:2)
不,这并不是人们在提到2D阵列时的意思。它只是一个对象列表,其中每个对象都有多个属性。在任何情况下,KeyValuePair
列表中通常使用Dictionary
个对象,而不是简单的List(Of T)
列表。由于Dictionary
对象是作为哈希表实现的,因此通过其键值(即名称)访问项目非常容易和有效。所以,例如,如果您使用这样的字典:
Dim dict As New Dictionary(Of String, Integer)()
dict.Add("Tony", 16)
dict.Add("George", 19)
然后你可以访问" Tony"像这样的项目:
Dim age As Integer = dict("Tony")
但是如果你必须使用List(Of KeyValuePar)
个对象,那么你只需要遍历它们就可以找到匹配的项目,如下所示:
Dim match As KeyValuePair = Nothing
For Each i As KeyValuePair In list
If i.Key = "Tony" Then
match = i
Exit For
End If
Next
Dim age As Integer = match.Value
但LINQ确实让这更容易:
Dim age As Integer = list.First(Function(x) x.Key = "Tony").Value
答案 1 :(得分:0)
list.Item(0).Key
将获得密钥" Tony"
list.Item(0).Value
将获得值16
和
list.Item(1).Key
将获得密钥" George"
list.Item(1).Value
将获得值19
答案 2 :(得分:0)
我建议使用KeyValue对的字典而不是KeyValue对的List.You将有一个优点,你可以检查一个键是否存在而不迭代字典。如果密钥存在,您可以获得其价值。这是你如何做到的。
Dim dict As New Dictionary(Of String, Integer)
Dim keyvalue As Integer=0
dict.Add("Jhon",47)
dict.Add("Zara",21)
if(dict.ContainsKey("Jhon")){
keyvalue = dict("Jhon")
}
对于List,你必须迭代直到找到密钥。