none
Cannot implicitly convert type 'System.Collections.Generic.List' -> Urgente RRS feed

  • Pregunta

  • buenos días me pueden echar un mano con esto. ya se me hiso un lió de media hora y no lo he podido resolver he gogleado y nada.

    les dejo una pantallaso para que pueda observar el error

    viernes, 18 de julio de 2014 17:14

Respuestas

  • Hola Josue, que tal veamos yo lo que veo el problema esta en el group by debes usarlo de manera distinta no como lo estas enviando eso a de producir un lista null y obviamente no tiene las especificaciones a pasarlo a una lista de tipo EmpresaUsuarioClass entonces te dejo algo que a mi me paso que tenia que utilizar un Count y Group By, espero te sirva y purebes en tu consulta.

    var query = (
      from a in _encaBL.ObtenerBuque(DBComun.Estado.verdadero, c_cliente)
      join b in DetaDocDAL.ObtenerDoc(DBComun.Estado.verdadero, c_cliente) on a.c_llegada equals b.c_llegada into joinBuques
      from b in joinBuques.DefaultIfEmpty()
      group new { a, b } by new
      {
        c_buque = a.c_buque,
        c_cliente = a.c_cliente,
        c_llegada = a.c_llegada,
        c_imo = a.c_imo,
        d_buque = a.d_buque,
        d_cliente = a.d_cliente,
        f_llegada = a.f_llegada
      } into g
      select new DocBuque
      {
        c_llegada = g.Key.c_llegada,
        c_buque = g.Key.c_buque,
        c_imo = g.Key.c_imo,
        c_cliente = g.Key.c_cliente,
        d_buque = g.Key.d_buque,
        d_cliente = g.Key.d_cliente,
        f_llegada = g.Key.f_llegada,
        CantArchivo = g.Count(p => ((p.b != null) && (p.b.IdDoc != null)))
      }
    ).ToList();


    Al final lo resolvi de una manera mas simplificada quedándome de esta manera.

    var query = (
      from a in _encaBL.ObtenerBuque(DBComun.Estado.verdadero, c_cliente)
      select new DocBuque
      {
        c_llegada = a.c_llegada,
        c_buque = a.c_buque,
        c_imo = a.c_imo,
        c_cliente = a._cliente,
        d_buque = a.d_buque,
        d_cliente = a.d_cliente,
        f_llegada = a.f_llegada,
        CantArchivo = (
    	from b in DetaDocDAL.ObtenerDoc(DBComun.Estado.verdadero, c_cliente)
    	where (a.c_llegada == b.c_llegada) && (b.IdDoc != null)
    	select b
        ).Count()
      }

    las dos formas resolvían mi problema, uno es utilizando group by y left join y la otra es usando una subconsulta, observa la estructura para que uses el group by.

    Suerte y saludos.


    Elsa B. Sosa

    • Marcado como respuesta Josue Brenes viernes, 18 de julio de 2014 18:03
    viernes, 18 de julio de 2014 17:44

Todas las respuestas

  • Hola Josue, que tal veamos yo lo que veo el problema esta en el group by debes usarlo de manera distinta no como lo estas enviando eso a de producir un lista null y obviamente no tiene las especificaciones a pasarlo a una lista de tipo EmpresaUsuarioClass entonces te dejo algo que a mi me paso que tenia que utilizar un Count y Group By, espero te sirva y purebes en tu consulta.

    var query = (
      from a in _encaBL.ObtenerBuque(DBComun.Estado.verdadero, c_cliente)
      join b in DetaDocDAL.ObtenerDoc(DBComun.Estado.verdadero, c_cliente) on a.c_llegada equals b.c_llegada into joinBuques
      from b in joinBuques.DefaultIfEmpty()
      group new { a, b } by new
      {
        c_buque = a.c_buque,
        c_cliente = a.c_cliente,
        c_llegada = a.c_llegada,
        c_imo = a.c_imo,
        d_buque = a.d_buque,
        d_cliente = a.d_cliente,
        f_llegada = a.f_llegada
      } into g
      select new DocBuque
      {
        c_llegada = g.Key.c_llegada,
        c_buque = g.Key.c_buque,
        c_imo = g.Key.c_imo,
        c_cliente = g.Key.c_cliente,
        d_buque = g.Key.d_buque,
        d_cliente = g.Key.d_cliente,
        f_llegada = g.Key.f_llegada,
        CantArchivo = g.Count(p => ((p.b != null) && (p.b.IdDoc != null)))
      }
    ).ToList();


    Al final lo resolvi de una manera mas simplificada quedándome de esta manera.

    var query = (
      from a in _encaBL.ObtenerBuque(DBComun.Estado.verdadero, c_cliente)
      select new DocBuque
      {
        c_llegada = a.c_llegada,
        c_buque = a.c_buque,
        c_imo = a.c_imo,
        c_cliente = a._cliente,
        d_buque = a.d_buque,
        d_cliente = a.d_cliente,
        f_llegada = a.f_llegada,
        CantArchivo = (
    	from b in DetaDocDAL.ObtenerDoc(DBComun.Estado.verdadero, c_cliente)
    	where (a.c_llegada == b.c_llegada) && (b.IdDoc != null)
    	select b
        ).Count()
      }

    las dos formas resolvían mi problema, uno es utilizando group by y left join y la otra es usando una subconsulta, observa la estructura para que uses el group by.

    Suerte y saludos.


    Elsa B. Sosa

    • Marcado como respuesta Josue Brenes viernes, 18 de julio de 2014 18:03
    viernes, 18 de julio de 2014 17:44
  • Gracias me ha servido de mucho!
    viernes, 18 de julio de 2014 18:03