2017-10-09 1 views
1

Ich habe eine Sammlung "entity.DestinationDetailscollection". Ich habe dann diese Sammlung in eine andere Sammlung "DestinationCollection" kopiert, wie im folgenden Code gezeigt. Aber immer wenn ich die Quellensammlung lösche (z. B. entity.DestinationDetailscollection), wird auch die Sammlung "DestinationCollection" gelöscht. Bitte helfen Sie.Sammlung wird beim Löschen der Quellensammlung gelöscht

Dim DestinationCollection As New Collection(Of StudentDTO) 

DestinationCollection = New Collection(Of StudentDTO)(entity.DestinationDetailscollection) 

entity.DestinationDetailscollection.Clear() 
+1

Es ist eine seltsame Klasse mit einem Namen, der zu attraktiv ist. Sie sollten List (Of StudentDTO) bevorzugen. –

Antwort

1

Wenn man sich die documentation of Collection(Of T) anschauen, werden Sie feststellen, dass Collection(Of T) Konstruktor nicht die Quelle Sammlung als Parameter geliefert kopiert. Es fungiert nur als Wrapper. Also wird man den anderen löschen.

Dieses Verhalten unterscheidet sich von List(Of T) -Konstruktor, der die Quellelemente der Sammlung (nur Objektreferenzen kopiert werden) in das neue List-Objekt kopiert und erstellt somit eine separate Liste.

Obwohl Sie die gesamte Liste immer manuell in das neue Sammlungsobjekt (eine einfache Schleife) kopieren könnten, sollten Sie über Collection(Of T) bevorzugen.

Als eine Randnotiz, Instanziieren Sie Ihre Collection zweimal. Sie sollten es in einer Zeile:

Dim DestinationCollection As New Collection(Of StudentDTO)(entity.DestinationDetailscollection) 

Sie sollten Ihre ersten beiden Zeilen durch diese eine Zeile ersetzen.

+0

ok danke .... Ich habe eine Schleife verwendet, um die Sammlung in eine andere Sammlung zu kopieren, und es hat funktioniert. – Che

Verwandte Themen