none
sentencia max LINQ RRS feed

  • Pregunta

  • HOLA ....estoy haciendo una apliacion web y tengo una problema lo que quiero hacer es insertar a una tabla y despues traerme es registro insertado para llenar otro campo de tabla de ese mismo registro concatenado con otro...

    lo que hago es primero insertar los registros que requiere el usuario y despues con la sentencia MAX me traigo el ultimo registros insertado para despues concatenar el campo "IDFOLIO" con "AREA" y volverlo a guardar...

    bueno el error me lo marca en la consulta pero solo cuando no hay registros en la tabla cuando ya registros funciona bien

    public int  lastFolio()
            {
                int i = (from l in DBFolios.folios
                         select (l.id_folio)).Max();
                return i;

    El valor Null no se puede asignar a un miembro con el tipo System.Int32 que es un tipo de valor que no acepta valores Null.

    espero y me puedan ayudar.....

    • Cambiado jtorrecilla jueves, 12 de julio de 2012 11:22 Es relativo a LINQ (De:ASP.NET)
    jueves, 12 de julio de 2012 5:02

Todas las respuestas

  • que pasa si haces

    public int lastFolio()
    {
    	var query = from l in DBFolios.folios
    				select l.id_folio
    				
    	if(query.Count() == 0)
    		return 0;
    		
    	return query.Max();
    }

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta jtorrecilla jueves, 12 de julio de 2012 11:23
    jueves, 12 de julio de 2012 5:16
  • Hola AddyMercy

    Me sumo a lo que te comenta Leandro, solo para recomendar el cambio de esta linea

    if(query.Count() == 0) return 0;

    Por Any()

    if(!query.Any()) return 0;

    y es lo mismo? Si. Solo que mas eficiente. 
    Aqui Any() no devuelve ningún elemento, ni la cantidad. Solo si contiene algo o no. (true/false)
    Textual de MSDN:

       (...)La enumeración de source se detiene en el momento en que se puede determinar el resultado.(...)

    Enlaces que te pueden ayudar

    Espero que te sirva de ayuda o guia.


    Jose. A Fernandez | blog: http://geeks.ms/blogs/fernandezja

    • Propuesto como respuesta jtorrecilla jueves, 12 de julio de 2012 11:22
    jueves, 12 de julio de 2012 11:04
  • Hola,

    googleando un poco sobre el método Max() he encontrado otra versión que alomejor te gusta. Eso sí, habría que estudiar el rendimiento de esta solución.

    public int lastFolio()
    {
      int? i = (from l in DBFolios.folios
                select ((int?)l.id_folio)).Max();
      return i ?? 0;
    }

    aunque mirando la consulta que genera esta versión es la misma que genera la versión sin el nullable. 


    Atentamente, Sergio.

    Blog
    Twitter

    jueves, 12 de julio de 2012 11:37
  • hola Buenas noches Leandro gracias por tu ayuda me sirvio mucho .....

    viernes, 13 de julio de 2012 3:46