У меня есть ряд данных, где каждый элемент имеет ряд значений, связанных с ним. Блоки элементов будут иметь эти значения, тогда как для других элементов они изменятся.
Я передаю данные между базами данных. В старом каждый элемент имеет все свои значения, хранящиеся отдельно. В новой базе данных я хочу воспользоваться тем фактом, что большое количество элементов имеют одинаковые значения, сохраняя эти наборы значений в качестве конфигурации. Я делаю это в VBA для Excel.
Чтобы определить, что это за уникальные наборы значений, я хотел бы использовать словарь, ключом которого является коллекция. Я впал в ложное чувство безопасности, потому что он позволял мне это делать, однако ему не удалось определить, где ключи идентичны.
Пример кода следующий. Следует добавить только два элемента в словарь, но добавить все 3. Я что-то упустил или просто ожидаю слишком много словаря? Это сэкономило бы мне немного времени, если бы мне не пришлось сравнивать все наборы вручную.
Sub CollectionAsKeyTest()
Dim dic As New Dictionary
Dim col As Collection
Dim i As Integer
dic.CompareMode = BinaryCompare
'Create a collection to add to dictionary:
Set col = New Collection
For i = 1 To 10
col.Add i * 1
Next i
dic.Add col, "item 1"
'Create a different collection and add as key to dictionary:
Set col = New Collection
For i = 1 To 10
col.Add i * 2
Next i
If Not dic.Exists(col) Then dic.Add col, "item 2"
'Create a collection which is the same as the first, and try to add to dictionary:
Set col = New Collection
For i = 1 To 10
col.Add i * 1
Next i
If Not dic.Exists(col) Then dic.Add col, "item 3"
'All three collections are added:
Debug.Print "Number of collections added = " & dic.count
End Sub