none
Consultar si esta en otra tabla RRS feed

  • Pregunta

  • Hola como va ? tengo este código que con ayuda de ustedes realice para buscar si un numero de remito esta en otra tabla si ya existe no lo carga en el grid.

    var data = (from r in dbcontext.RemitosEntradaFruta
                                let RemitosLocal = (from l in dbcontext.SENASAInformeIngresoFrutaDetalle select l)
                                where !RemitosLocal.Select(x => x.NRemito).Contains(r.NroRemito) && r.Destino == "UE"
                               select r).ToList();
                    dataGridView1.DataSource = data.ToList();
    Ahora puede darse el caso que el numero de remito sea igual al de otro proveedor en ese caso la consulta debería ser numero de remito y proveedor, pero no doy en la tecla. Desde ya gracias

    viernes, 30 de marzo de 2018 14:37

Respuestas

  • Entiendo. 

    Vamos a evaluar la existencia con el método Any().

    where !RemitosLocal.Any(x => x.NRemito == r.NroRemito && x.Productor == r.Productor) 
            && r.Destino == "UE"

    Sugiero utilizar, en tanto sea posible, el operador == en lugar del método Contains(), por un tema de rendimiento.

    • Marcado como respuesta EnzoTuc40 viernes, 30 de marzo de 2018 22:48
    viernes, 30 de marzo de 2018 16:12

Todas las respuestas

  • No termino de entender la nueva restricción como para proponer código, pero quizá bastaría con agregar una nueva condición, conectada por el operador &&, validando por la columna proveedor.

    Quizá otra forma más simple, para escribir todas las condiciones, sea mediante una combinación de tipo Left Join.

    viernes, 30 de marzo de 2018 15:24
  • No termino de entender la nueva restricción como para proponer código, pero quizá bastaría con agregar una nueva condición, conectada por el operador &&, validando por la columna proveedor.

    Quizá otra forma más simple, para escribir todas las condiciones, sea mediante una combinación de tipo Left Join.

    Hola Willams Morales, casualmente usted fue el que me proporciono el código que muestro, con ese código busco todos los remitos de la tabla "RemitosEntradaFruta" y si existe en la tabla  " SENASAInformeIngresoFrutaDetalle" significa que ya se proceso entonces en el grid no lo muestra, pero puede aparecer el caso que otro remito tenga la misma numeración pero es de otro productor entonces intento que la restricción sea por 2 campos numero de remito + productor. Dejo ejemplo en la primera tabla existe remito 0001 + productor A y remito 0001 + productor B el remito 0001 + productor A ya se proceso y existe en la segunda tabla esta bien que no lo muestre pero en la segunda tabla no existe 0001 + productor B y este tampoco aparece puesto que la restriccion es por numero de remito. Espero se entienda desde ya gracias
    viernes, 30 de marzo de 2018 15:41
  • Entiendo. 

    Vamos a evaluar la existencia con el método Any().

    where !RemitosLocal.Any(x => x.NRemito == r.NroRemito && x.Productor == r.Productor) 
            && r.Destino == "UE"

    Sugiero utilizar, en tanto sea posible, el operador == en lugar del método Contains(), por un tema de rendimiento.

    • Marcado como respuesta EnzoTuc40 viernes, 30 de marzo de 2018 22:48
    viernes, 30 de marzo de 2018 16:12
  • Entiendo. 

    Vamos a evaluar la existencia con el método Any().

    where !RemitosLocal.Any(x => x.NRemito == r.NroRemito && x.Productor == r.Productor) 
            && r.Destino == "UE"

    Sugiero utilizar, en tanto sea posible, el operador == en lugar del método Contains(), por un tema de rendimiento.

    Exelente gracias de nuevo.
    viernes, 30 de marzo de 2018 22:48