Я объединяю два списка в Visual Basic. Эти списки имеют пользовательский объект. Единственная запись, которую я хочу объединить, это то, что свойство со свойством не совпадает ни с одним другим объектом в списке. У меня это работает. Тем не менее, первый список просто 1,247 записей. Второй список, однако, не хватает 27.000.000 записей. В прошлый раз, когда я успешно объединил два списка с этим ограничением, это заняло более 5 часов.
Обычно я пишу код на C #. Однажды у меня была похожая проблема, и я решил ее с помощью любой функции. Работало отлично и очень быстро. Итак, как вы можете видеть в коде, я пробовал и здесь Однако это занимает слишком много времени.
Private Function combineLists(list As List(Of Record), childrenlist As List(Of Record)) As List(Of Record) 'list is about 1.250 entries, childrenlist about 27.000.000
For Each r As Record In childrenlist
Dim dublicate As Boolean = list.Any(Function(record) record.materiaalnummerInfo = r.materiaalnummerInfo)
If Not dublicate Then
list.Add(r)
End If
Next
Return list
End Function
Запись объекта выглядит следующим образом (я не был уверен, как создать пользовательский объект в VB, и это выглядит плохо, но это сработало):
Public Class Record
Dim materiaalnummer As String
Dim type As String 'Config or prefered
Dim materiaalstatus As String
Dim children As New List(Of String)
Public Property materiaalnummerInfo()
Get
Return materiaalnummer
End Get
Set(value)
materiaalnummer = value
End Set
End Property
Public Property typeInfo()
Get
Return type
End Get
Set(value)
type = value
End Set
End Property
Public Property materiaalstatusInfo()
Get
Return materiaalstatus
End Get
Set(value)
materiaalstatus = value
End Set
End Property
Public Property childrenInfo()
Get
Return children
End Get
Set(value)
children = value
End Set
End Property
End Class
Я надеялся, что кто-нибудь сможет направить меня в правильном направлении, чтобы сократить необходимое время. Заранее спасибо.