从二维列表中获取值

时间:2015-01-27 18:28:26

标签: vb.net list

嗯,我真的不知道这是不是二维列表,但无论如何我都会问。

所以我有这个:

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”中获得价值?还是“乔治”?

3 个答案:

答案 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,你必须迭代直到找到密钥。