Principales respuestas
Clonar o copiar listas y agregar el contenido en otra lista.

Pregunta
-
Hola tengo el siguiente problema, tengo un objecto _LineProgram el cual coontiene 3 niveles de liestas.
1 - WeekDayList - Lista de días de la semana.
Dentro de esta lista tenemos a
2 - Shifts - Contione una lista de turnos para ese día.
Y dentro de esta lista tenemos a
3 - StopProgramList - Codigos de parada para los turnos.
Estas 3 listas corresponden al día Lunes (Monday).
Lo que quiero hacer, es que todo el contenido del día lunes (Lista Shift y lista StopProgramList), se copie tanto para el día jueves y viernes por ej o los días que yo le indique.
Mi Watch para entender la estrucura.
José Maria Antunez
Respuestas
-
Para agregar un nuevo Items a _LineProgram, los pasos lógicos son:
Supongamos que la instancia de _LineProgram está en la variable "lp"
1) Creas el nuevo objeto WeekDay: WeekDay jueves = new WeekDay();
2) Seteas las prop del nuevo objeto "jueves": jueves.Day="Thursday"; jueves.Nombre="Jueves"; ...etc. Aquí es donde tenes que agregarle la nueva lista Shifts (previamente hay que crearla y cargar sus items)
3) Agregas el nuevo objeto jueves a la lista WeekDayList: lp.WeekDayList.Add(jueves);
- Editado AntiWork viernes, 12 de abril de 2019 11:41
- Propuesto como respuesta Pablo RubioModerator viernes, 12 de abril de 2019 15:13
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:08
-
Si mi duda es com hago para aregar otro item mas con dia Jueves en WeekDayList y luego dentro de ese día (item) todo lo que tiene el lunes, shift(Turnos) y stopProgramList.
José Maria Antunez
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:08
Todas las respuestas
-
Hola tengo el siguiente problema, tengo un objecto _LineProgram el cual coontiene 3 niveles de liestas.
1 - WeekDayList - Lista de días de la semana.
Dentro de esta lista tenemos a
2 - Shifts - Contione una lista de turnos para ese día.
Y dentro de esta lista tenemos a
3 - StopProgramList - Codigos de parada para los turnos.
Estas 3 listas corresponden al día Lunes (Monday).
Lo que quiero hacer, es que todo el contenido del día lunes (Lista Shift y lista StopProgramList), se copie tanto para el día jueves y viernes por ej o los días que yo le indique.
Mi Watch para entender la estrucura.
Este es mi Watch para que se vea como mas claridad la estructora.
José Maria Antunez
- Combinado Sergio ParraModerator jueves, 11 de abril de 2019 21:39 Duplicada
-
"Estas 3 listas corresponden al día Lunes (Monday). "
Esto es contradictorio con lo que veo: Entiendo que Monday es uno de los objetos del tipo WeekDay, contenido en la lista WeekDayList. Si es así, el objeto Monday contiene la lista Shifts, la cual contiene la lista StopProgramList. Asumiendo esto, te dejo este ejemplo:
private Copiar(_LineProgram lp) { WeekDay Lunes = lp.WeekDayList.Find(x => x.Dia == "Monday"); WeekDay Jueves = lp.WeekDayList.Find(x => x.Dia == "Thursday"); // aquí seteas las propiedades del WeekDay "Jueves" foreach (Shift s in Lunes.Shifts) { Shift shJueves = new Shift(); // aquí seteas las prop del Shift "shJueves" foreach (StopProgram sp in s.StopProgramList) { StopProgram spJueves = new StopProgram(); spJueves.Stop = sp.Stop; //seteas el resto de las prop del StopProgram "spJueves" shJueves.StopProgramList.Add(spJueves); } Jueves.Shifts.Add(shJueves); } }
- Propuesto como respuesta Carlos_Ruiz_M miércoles, 10 de abril de 2019 21:00
- Propuesto como respuesta Pablo RubioModerator viernes, 12 de abril de 2019 15:38
-
Hola Carlos, Monday es un item de la lista WeekDayList, que se iria llenando a medida que yo selecciono los días en la interfaz. En el Ej: tendria cargado el día Lunes, con la lista Shift y esta conteniendo a la lista StopProgramList.
Lo que no entiendo cuando me dices: //Aqui seteas propiedades, en realidad no deberia setearlas, deberian las listas tener el mismo contenido que tuvieron para el día Lunes, y copiarlas para el dia que yo desee, por ej Jueves.
Saludos!.
José Maria Antunez
- Propuesto como respuesta Pablo RubioModerator viernes, 12 de abril de 2019 15:38
-
La idea es crear un objeto nuevo para el jueves, incluyendo las listas y sus items, luego setear las prop con los valores que tengan los objetos del lunes. Porque si asignamos objetos directamente (obj1=obj2), lo que ocurre es que se asignan las referencias y tendrías los mismos objetos para lunes y jueves. A menos que quiera que ocurra eso, pero en ese caso, tener en cuenta que las modificaciones en uno impactarán también en el otro.
- Editado AntiWork jueves, 11 de abril de 2019 11:44
-
Puedes copiar una lista, o parte de la misma, en otra con un codigo similar a este:
listaDestino.AddRange(listaOrigen.Select(condicion));
La condicion es una expresion lambda tal como x=>x.Dia==1 que logicamente depende de los campos que contengan los objetos de tu lista.
O, si quieres copiar la lista entera:
listaDestino.AddRange(listaOrigen);
Recuerda que esto hace un "shallow copy" y no un "deep copy", es decir, los objetos de la lista se copian por referencia, no se clona cada uno de los objetos por separado.
- Marcado como respuesta Pablo RubioModerator jueves, 11 de abril de 2019 16:13
- Desmarcado como respuesta Pablo RubioModerator jueves, 11 de abril de 2019 16:13
- Propuesto como respuesta Pablo RubioModerator jueves, 11 de abril de 2019 16:13
-
Si mi duda es com hago para aregar otro item mas con dia Jueves en WeekDayList y luego dentro de ese día (item) todo lo que tiene el lunes, shift(Turnos) y stopProgramList.
José Maria Antunez
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:08
-
Para agregar un nuevo Items a _LineProgram, los pasos lógicos son:
Supongamos que la instancia de _LineProgram está en la variable "lp"
1) Creas el nuevo objeto WeekDay: WeekDay jueves = new WeekDay();
2) Seteas las prop del nuevo objeto "jueves": jueves.Day="Thursday"; jueves.Nombre="Jueves"; ...etc. Aquí es donde tenes que agregarle la nueva lista Shifts (previamente hay que crearla y cargar sus items)
3) Agregas el nuevo objeto jueves a la lista WeekDayList: lp.WeekDayList.Add(jueves);
- Editado AntiWork viernes, 12 de abril de 2019 11:41
- Propuesto como respuesta Pablo RubioModerator viernes, 12 de abril de 2019 15:13
- Marcado como respuesta Pablo RubioModerator jueves, 2 de mayo de 2019 17:08