none
Convert.ToInt32 en JOIN y LinQ RRS feed

  • Pregunta

  • Los valores de correlativoMes y meses:

    correlativoMes.Mes = {"01", "02", "03", "04", "05", ..., "12"}

    meses.MesID = {0,1,2,3,4,5,...,12}

    var query =
        (from correlativoMes in db.CorrelativoMes
            join meses in db.Meses on Convert.ToInt32(correlativoMes.Mes) equals meses.MesID
            where correlativoMes.EmpresaID == Globales.EmpresaID && correlativoMes.GestionID == Globales.GestionID
            select new _CorrelativoMes()
            {
                CorrelativoMesID = correlativoMes.CorrelativoMesID,
                MesN = meses.MesN,
                CorrelativoNro = correlativoMes.CorrelativoNro
            }).Where(Filtro);

    • Cambiado Karen Malagón martes, 21 de abril de 2015 21:29 LINQ issue
    martes, 21 de abril de 2015 3:31

Todas las respuestas

  • y cual es tu duda? Puedes ser mas específico?

    gracias


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 21 de abril de 2015 3:37
  • supongo que tu código cuando se ejecuta te lanza una NotSupportedException verdad? Linq to entities no es capaz de usar los métodos Convert.ToInt32() ni ningún convert.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 21 de abril de 2015 3:51
  • Convertir a entero un string en el Join de Linq

    martes, 21 de abril de 2015 4:27
  • prueba lo siguiente, añade AsEnumerable() en tus tablas

    var query =
         (from correlativoMes in db.CorrelativoMes.AsEnumerable()
            join meses in db.Meses.AsEnumerable() on Convert.ToInt32(correlativoMes.Mes) equals meses.MesID
    ....


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 21 de abril de 2015 4:38
  • El Convert.ToInt32 da error
    • Propuesto como respuesta Sergio Parra martes, 21 de abril de 2015 6:31
    • Votado como útil Sergio Parra martes, 21 de abril de 2015 6:31
    martes, 21 de abril de 2015 4:52
  • var query =
        (from correlativoMes in db.CorrelativoMes.ToList()
            join meses in db.Meses.ToList() on Convert.ToInt32(correlativoMes.Mes) equals meses.MesID
            where correlativoMes.EmpresaID == Globales.EmpresaID && correlativoMes.GestionID == Globales.GestionID
            select new _CorrelativoMes()
            {
                CorrelativoMesID = correlativoMes.CorrelativoMesID,
                MesN = meses.MesN,
                CorrelativoNro = correlativoMes.CorrelativoNro
            }).Where(Filtro);


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 21 de abril de 2015 6:31
  • O también puedes usar los métodos extensores de Linq.

    Este es un ejemplo, obviamente no he podido probrarlo

    var query = db.CorrelativoMes.Join(         // Source Collection
                            db.Meses,                       // Inner Collection
                            p => Convert.ToInt32(p.Mes),    // PK
                            a => a.MesID,                   // FK
                            (p, a) => new { CorrelativoMes = p, Meses = a })  // Result Collection
                            .Select(a => new _CorrelativoMes()
                                {
                                    CorrelativoMesID = p.CorrelativoMes.CorrelativoMesID,
                                    MesN = a.Meses.MesN,
                                    CorrelativoNro = p.CorrelativoMes.CorrelativoNro
                                }
                            ).Where(x => x.EmpresaID == Globales.EmpresaID && 
                                        x.GestionID == Globales.GestionID);


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    martes, 21 de abril de 2015 6:44
  • hola

    pero porque quieres convertir de int a string? no se supone que la propiedad MesID de db.Meses debe ser numerica ?

    sino tienes que usar las

    SqlFunctions Class

    que proporcionan metodos que se corresponden con funcionalidad que sera traducida al sql cuando se inteprete el linq

    ----

    aunque sigo pensando que no hace falta ninguna conversion porque podrias usar

    correlativoMes.Mes = {1, 2, 3, 4, 5, ..., 12}

    para que sea directamente numerico, no veo porque lo defines como string

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 21 de abril de 2015 10:28