Visual Basic.NET - Modificacion List de una clase

 
Vista:

Modificacion List de una clase

Publicado por ripr87 (1 intervención) el 22/11/2021 18:39:35
tengo una duda, no he podido publicar mi pregunta, por que me acabo de registrar

estoy haciendo un funcion para agrupar los productos de varios traspasos en un solo registro, sumando cantidad, importe y descuento,
para esto hice una lista de la Clase Traspaso, y dentro de la clase Traspaso hay un propiedad que sellama Partidas, es una lista de la clase Partida,
y está clase Partida tiene las propiedades de Sku, Cantidad, Importe y descuento. mi funcion es la siguiente:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Function agruparProductos()
        Dim lineas = New List(Of Partida)
        For Each tras As Traspaso In Traspasos
            For Each conc As Partida In tras.Partidas
                If conc.Sku = "6133" Then
                    Console.WriteLine("SKU: " & conc.Descripcion)
                End If
                If lineas.Exists(Function(x) x.Sku = conc.Sku) Then
                    For Each producto As Partida In lineas
                        If producto.Sku = conc.Sku Then
                            producto.Cantidad += conc.Cantidad
                            producto.Importe += conc.Importe
                            producto.Descuento += conc.Descuento
                            Exit For
                        End If
                    Next
                Else
                    lineas.Add(conc)
                End If
            Next
        Next
        Return lineas
    End Function

el problema es que por alguna razón, se modifica los valores(Cantidad,Importe, descuendo) de mi objeto de la Lista traspasos, cuando deberia solo afectar la el objeto <List> lineas, y no entiendo porqué, hice un debug
para ver en que momento cambia el valor y es al paso de las siguientes lineas

1
2
3
producto.Cantidad += conc.Cantidad
producto.Importe += conc.Importe
producto.Descuento += conc.Descuento

eso se nota cuando paso al segundo traspaso de <List> Traspaso.
el las linea
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder