none
problema con recuperación de datos y mostrar en listado. RRS feed

  • Pregunta

  • hola, estoy trabajando con VS2015, contra un entity framework de Oracle.

    tengo tres entidades con datos relacionados.

    ACCESO: ACCESOID, DESCRIPCION

    CENTRO:CENTROID, DESCRIPCION

    ACESOCENTRO: ACCESOID, CENTROID

    por cada ACCESO hay varios CENTROS

    necesito mostrar en un listado ACCESOID, ACCESO.DESCRIPCION, CENTROID, CENTRO.DESCRIPCION

    hago lo siguiente:

    List<ACCESO> lAcceso = new List<ACCESO>();
    lAcceso = db.ACCESO.Include(c => c.CENTRO).ToList();

    var objModo =
        lAcceso.GroupBy(n => n.ACCESOID)
            .Select(g => new
            {
                ACCESOID = g.Key,
                DESCRIPCIONACCESO = g.Select(p => p.DECRIPCION).FirstOrDefault(),
                CENTROID = g.Select(p=>p.CENTRO.....)/*AQUI TENGO EL PROBLEMA*/
         DESCRIPCIONCENTRO = = g.Select(p=>p.CENTRO.....)/*AQUI TENGO EL PROBLEMA*/  
            })
            .ToList();

    el accesoid y la descripción del acceso la recupero sin problema, pero no se como hacer para recuperar el centroid y la descripción del centro. cuando pongo el p.CENTRO me dice que el objeto es un List<Centro>, tendré que hacer una especie de distinct o similar pero no soy capaz.

    si alguien puede ayudarme lo agradecería. saludos!

    martes, 23 de mayo de 2017 9:20

Todas las respuestas

  • hola

    Pero en entity framework no configura la relacion muchos a muchos ? porque si es asi recuerda que una instancia de acceso tendra varias de centro, no puedes aplanar los datos ya que si lo haces en una u otra entidad habra repeticiones

    eso del groupby no aplica, porque no vas a conseguir nada en una relacion muchos a muchos

    >>CENTROID = g.Select(p=>p.CENTRO.....)/*AQUI TENGO EL PROBLEMA*/

    y claro porque es lo que comente, que es lo que quieres lograr? si es mostrar uno solo no uses el Select() usa el First() pero estarias mostrando solo una relacion o sino vas a tener que concatenar todos los CentroId porque es una lista la que obtienes

    aconsejaria analices la relacion que defines y replantees lo que quieres obtener porque hay algo que no cierra

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 24 de mayo de 2017 11:02
  • gracias por molestarte Leandro, esta claro que no se explicar el problema correctamente.

    Es decir, yo al tener esto

    List<ACCESO> lAcceso = new List<ACCESO>();
    lAcceso = db.ACCESO.Include(c => c.CENTRO).ToList();

    Tengo n accesos y cada uno puede tener n centros.

    eso quiero mostrarlo en un listado:

    ACCESO 1, CENTRO 1

    ACCESO 1, CENTRO 2

    ACCESO 2, CENTRO 1

    ACCESO 2, CENTRO 3

    jueves, 22 de junio de 2017 16:01