none
Obtener el ultimo id grabado en la tabla ventas consulta linq RRS feed

  • Pregunta

  • buenas noches

    amigos del foro necesito su ayuda necesito hacer una consulta que me entregue  el ultimo id insertado en una consulta linq

    tengo una tabla que se llama ventas 

    tengo una vista que se llama vi_ventas_detalles  de la consulta

    el campo que quiero filtra se llama idventa 

      public List<Vi_Ventas_Detalle> GetByID(int IdTipoDocumento,int NumeroDocumento)
            {
                DAL.IRepository repository = new Modelo.Repository();
                try
                {
                    var ventas = repository.FindEntitySet<Vi_Ventas_Detalle>(x => x.IdTipoDocumento==IdTipoDocumento && x.NumDocumento ==NumeroDocumento).ToList();
                    return ventas;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }


    • Editado djnilo viernes, 2 de junio de 2017 3:16
    • Cambiado Joyce_AC lunes, 12 de junio de 2017 18:48
    viernes, 2 de junio de 2017 3:09

Todas las respuestas

  • Hola:

     La funcion que estas mostrando devolvera como resultado una Lista del tipo "Vi_Ventas_Detalle", por lo cual dentro de la misma funcion no podras filtrar y devolver el ultimo id registrado en el campo "IdVenta", pero si podras filtrar el resultado de esa funcion, por ejemplo:

    var resultado  = GetByID(1, 22);
    var ultimoId =  resultado.Any()? resultado.Max(x => x.IdVenta) : 0;

    De donde resultado se carga con el valor devuelto por la funcion GetById, luego a este resultado usando Linq obtenemos el valor correspondiente al valor maximo (que supongo yo sera el ultimo ingresado).

     Espero te sirva de guia.


    Saludos desde Monterrey, Nuevo León, México!!!


    viernes, 2 de junio de 2017 4:00
  • hola

    Que linq estas usando ? porque mencioans una vista, por lo tanto hay una db, estas usando entity framework?

    ademas porque una vista para obtener algo que insertas? no tiene mucho sentido

    Si tienes un idventa es porque tienes una entidad Ventas, entonces porque no consultas directo sobre esta en lugar de usar la vista?

    no se que sera ese Repository, pero la idea es que puedas acceder al contexto de EF o el medio persistente que uses y realices

    int idVenta = context.Ventas.Max(x=> x.IdVenta);

    asi directo usando el Max()

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 2 de junio de 2017 4:14
  • gracias por responder leandro lo que pasa es que la vista junta varias tablas y imprime un reporte que esta echo de esa forma lo que intento hacer es me reimprime dicho reporte entonces yo queria mostrar el ultimo id grabado = idventa

    oRepo.Load(Application.StartupPath + @"\Reportes\RptFactura.rpt");
                            ListaDetalleVenta= objVenta.GetByID(newCaja.IdTipoDocumento, newCaja.NumDocumento);
                            oDatosRepo.DataSource = ListaDetalleVenta;
                           
                            oRepo.SetDataSource(oDatosRepo);
                           
                            oRepo.PrintToPrinter(1, false, 0, 0);

    lo que neceiso es Re imprimir la ultima venta  entoces pese en ocupar la misma vista que arma mi reporte

    que es

    Vi_Ventas_Detall

     public List<Vi_Ventas_Detalle> GetByIdVenta(int IdVenta)
            {
                DAL.IRepository repository = new Modelo.Repository();
                try
                {
                    var ventas = repository.FindEntitySet<Vi_Ventas_Detalle>(x => x.IdVenta==IdVenta ).ToList();
                    return ventas;   Queria hacer algo asi que me mostrar el ultimo idventa insertado
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
    ese es el enredo que tengo  cuando no..

    por eso pido alguna orientación

    viernes, 2 de junio de 2017 4:32