.net 多次使用同一键的VB字典
一本字典有可能多次使用同一个键吗?我环顾了很多地方,答案似乎是肯定的。我正在从csv文件中读取cc编号,并将其添加到字典中。大多数说“不”的帖子通常表示,多次添加一个键会引发异常。这肯定是错误的,因为我没有遇到这个问题。.net 多次使用同一键的VB字典,.net,arrays,vb.net,for-loop,dictionary,.net,Arrays,Vb.net,For Loop,Dictionary,一本字典有可能多次使用同一个键吗?我环顾了很多地方,答案似乎是肯定的。我正在从csv文件中读取cc编号,并将其添加到字典中。大多数说“不”的帖子通常表示,多次添加一个键会引发异常。这肯定是错误的,因为我没有遇到这个问题。 基本上我有这本字典 Dim allCalls As New Dictionary(Of String, Array) 我正在这样填充它 Dim Path As String = My.Application.Info.DirectoryPath & "\Calls.
基本上我有这本字典
Dim allCalls As New Dictionary(Of String, Array)
我正在这样填充它
Dim Path As String = My.Application.Info.DirectoryPath & "\Calls.txt"
Dim reader As StreamReader = My.Computer.FileSystem.OpenTextFileReader(Path)
Dim parts() As String
Dim lines() As String = IO.File.ReadAllLines(Path)
Array.Sort(lines)
For x As Integer = 0 To lines.GetUpperBound(0)
parts = lines(x).Split(CChar(","))
Dim data(1) As String
data(0) = parts(2)
data(1) = parts(5)
allCalls.Add(parts(1), data)
Next
reader.Close()
这部分工作得很好,但如果我在添加同一个密钥时覆盖了我的旧数据,我无法告诉您。然而,对我来说,这似乎是违反直觉的,因为它不会引起某种问题。基本上,我的目标是能够搜索这个东西的一个关键点,并得到所有的数组数据回来,我不知道如何做。我甚至不知道它是否还在那里,所以任何关于如何使用这些东西的帮助都会很好 如果您至少使用.NET 3.5,则可以使用该类
查找
类似于字典
。这个
不同之处在于字典将键映射到单个
值,而查找将键映射到
价值观
注
没有公共构造函数来创建查找的新实例。此外,Lookup
对象是不可变的,也就是说,在创建了Lookup
对象之后,您不能从中添加或删除元素或键
但您可以使用:
一个键可以返回零、一个或多个值:
Dim calls = allCalls("Key")
For Each c As String In calls
' ... '
Next
请注意,如果密钥不存在,则不会出现异常。Sequence将是空的。我最终使用了ArrayList字典,并将数组添加到该字典中。您不能在同一个密钥上多次存储,但检查它是否存在并添加到arraylist中效果良好似乎没有用于此操作的内置功能。您可以做的是制作一个字典,它的值的类型是列表。然后,当添加到字典中时,您需要检查键是否存在,并将值添加到保留同一键的所有值的列表中。在reader.Close()
上设置一个中断,然后将鼠标悬停在allCalls
上,您将能够查看其中的内容。字典键是/必须是唯一的,否则将无法获取正确的数据。使用allCall.ContainsKey
测试密钥是否已经存在allCalls(key)=newData
将替换与该键关联的数据。如果您至少使用.NET 3.5,则可以使用该类。答案为否。在CSV文件的第一列中具有唯一值并不少见。它通常类似于订单ID。如果你说的是字典
Dim calls = allCalls("Key")
For Each c As String In calls
' ... '
Next