Usuario
Obtener el ultimo id grabado en la tabla ventas consulta linq

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); } }
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!!!
- Editado JoséLuisGarcía 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 -
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