none
Unir dos listas de diferente estructura enC# RRS feed

  • Pregunta

  • Buenos dias.

    Tengo dos listas, con diferente tipos de estructura

     Las estructuras son:

    public struct ValorES        
    {           
     public int Fecha;           
     public decimal valor;        
    }


       public struct DatosEntSal
            {
                public string PuntoMed;
                public int NumId;
                public string Nombre;
                public string Etiqueta;
                public string Unidad;     
            }
         

    Necesito retornar una sola, para llenar las dastos , utilizo:

                foreach (PuntoDeMedicion _puntoMed in _PuntoMedicion.Where(aa => aa.Activo == true && aa.ContratoId == _contrato))
                {      
                    EntradasSalidas = _context.EntradaSalidas.Where(xx=> xx.PuntoDeMedicionId==_puntoMed.Id && xx.Graficar== 1).ToList();
                    DateTime _FechaFinal = DateTime.Parse(Fecha_Ultimo_Registros(_puntoMed.Id));
                    DateTime _FechaInicial = _FechaFinal.AddHours(-24);
    
              
                    foreach (var Valor_EntSal in EntradasSalidas)
                    {
                        List<Registro> data = new List<Registro>();
                        EntSalVista = _context.Vistas.Where(yy =>yy.ID_EntSal == Valor_EntSal.Id).ToList();
                        data = _context.Registroes.Where(a => a.EntradaSalidaId == _puntoMed.Id
                    && a.FechaHoraRegistro <= _FechaFinal
                    && a.FechaHoraRegistro >= _FechaInicial).OrderBy(i => i.FechaHoraRegistro).ToList();
    
                        foreach (var item in data)
                            datosReg.Add(new ValorES()
                            {
                                Fecha = item.FechaHoraCreacion.Value,
                                valor = item.Valor
                            });
    
    
    
                        foreach (var _ESVista in EntSalVista)
                            _ValoresEntSal.Add(new DatosEntSal()
                            {
                                PuntoMed= _puntoMed.Nombre,
                                NumId = Valor_EntSal.Id,
                                Nombre = Valor_EntSal.Nombre,
                                Etiqueta = Valor_EntSal.Etiqueta,
                                Unidad = Valor_EntSal.Unidad
                      
                            });
                   
                    }
                }
                
                return _ValoresEntSal;
    
            }

    Necesito que dentro de _ValoresEntSal, agregar los datos de la lista datosReg, el valor que devuelve quedaria algo como:

    {
    PuntoMed= Mza,NumId = 1,
    Nombre = Calle Mendoza,
    Etiqueta = CllMza,
    Unidad = kg,
    datosReg[..],
    }

    Saludos

    Eduardo



    lunes, 25 de junio de 2018 16:03

Respuestas

  • De hecho nose porque usas struct y no clases pero eso seria otra discusión, en cuanto a lo que planteas es posible meter cualquier tipo de dato dentro de un struct y ya que un struct se comporta como uno de estos puedes hacer algo así:

    public struct ValorVenta {           
        public int Fecha;           
        public decimal valor;        
    }
    public struct DatosEntSal {
        public string PuntoMed;
        public int NumId;
        public string Nombre;
        public string Etiqueta;
        public string Unidad;   
        public ValorVenta  ValorVentaObj;
    }


    • Editado exequiel22 martes, 26 de junio de 2018 16:50
    • Marcado como respuesta E.Ban miércoles, 27 de junio de 2018 15:35
    martes, 26 de junio de 2018 16:49

Todas las respuestas

  • Hola, me parece que no se logra entender tu problema. Según entiendo Tienes un List<T1> y un List<T2> donde T1 es un tipo y T2 es otro distinto y quieres devolver un List<T3>

    Si es así, deberías primero recorrer todos los datos de List<T1> y agregarlo a List<T3> según los campos que se necesiten y luego recorrer List<T2> y verificar si ya existe el dato grabado en List<T3> obtenerlo y rellenar los campos que faltan sino agregar un nuevo elemento.

    lunes, 25 de junio de 2018 16:19
  • Muchas gracias por tu respuesta.

    Esta bien lo que planteas, pero no es lo que necesito.

    Tengo dos listas,  List<_ValoresEntSal>, donde estan guardados alguno parmetros identificatorios del pto, y otra List<datosReg>, en esta guardo la fecha y la venta realizada en una rango de fechas, las dos listas esta relacionadas por el Id del punto de venta, esta ultima genera un arreglo de dos dimensiones,con muchos elementos.

    Necesito devolver una sola lista con toda la info junta. No se como unirlas.

    Pensaba hacer una lista con otra adentro, pero no se si se puede. La estructura que tenia en mente seria algo como:

       public struct DatosEntSal
            {
                public string PuntoMed;
                public int NumId;
                public string Nombre;
                public string Etiqueta;
                public string Unidad;   
                public struct ValorVenta        
                {           
                 public int Fecha;           
                 public decimal valor;        
                }
            }

    Pero no se si es correcto esto y como cargar el valor dentro de la estructura del TList

    foreach (var _ESVista in EntSalVista)
     _ValoresEntSal.Add(new DatosEntSal()
     {
     PuntoMed= _puntoMed.Nombre,
     NumId = Valor_EntSal.Id,
    Nombre = Valor_EntSal.Nombre,
    Etiqueta = Valor_EntSal.Etiqueta,
     Unidad = Valor_EntSal.Unidad
     // Como puedo cargar el valor    
    // seria algo como :    ValorVenta=datosReg;      
      });

    No se si me explique bien y esto es posible.

    Saludos


    • Editado E.Ban martes, 26 de junio de 2018 14:35
    martes, 26 de junio de 2018 14:33
  • De hecho nose porque usas struct y no clases pero eso seria otra discusión, en cuanto a lo que planteas es posible meter cualquier tipo de dato dentro de un struct y ya que un struct se comporta como uno de estos puedes hacer algo así:

    public struct ValorVenta {           
        public int Fecha;           
        public decimal valor;        
    }
    public struct DatosEntSal {
        public string PuntoMed;
        public int NumId;
        public string Nombre;
        public string Etiqueta;
        public string Unidad;   
        public ValorVenta  ValorVentaObj;
    }


    • Editado exequiel22 martes, 26 de junio de 2018 16:50
    • Marcado como respuesta E.Ban miércoles, 27 de junio de 2018 15:35
    martes, 26 de junio de 2018 16:49
  • Muchas gracias por tu respuesta.

    Es correcto lo que comentas y ahora voy a ver como utilizar las calases.

    miércoles, 27 de junio de 2018 15:36