2012-01-13 25 views
5

tengo esta consulta que he estado tratando de encontrar la manera de convertir a LINQ:favor me ayude a convertir a SQL LINQ

select bjbecd, bjbesk, areotx 
from insku 
inner join iniwre on bjcomp=a7comp and bjbecd=a7becd and bjbesk=a7besk 
inner join initem on bjcomp=arcomp and bjbecd=arbecd 
where a7comp=1 and 
a7wcde in (1,10) and 
a7ohdq>0 and rtrim(a7becd) + rtrim(a7besk) not in 
(select skucode from eoditems) 

Y aquí es mi LINQ hasta ahora:

(from i in db.INSKUs 
    join w in db.INIWREs on 
     new { i.BJCOMP, i.BJBECD, i.BJBESK } 
     equals 
     new { w.A7COMP, w.A7BECD, w.A7BESK } 
    join t in db.INITEMs on 
     new { i.BJCOMP, i.BJBECD } 
     equals 
     new { t.ARCOMP, t.ARBECD } 
    where w.A7COMP == 1 
    where w.A7WCDE == 1 || w.A7WCDE == 10 
    where w.A7OHDQ > 0 
    where !(from z in db.EODItems 
      select z.SkuCode).Contains(w.A7BECD.TrimEnd() + w.A7BESK.TrimEnd()) 
    select new { i.BJBECD, i.BJBESK, t.AREOTX } 
); 

Recibo un mensaje de error en la primera combinación que indica "El tipo de una de las expresiones en la cláusula join es incorrecta. Error en la inferencia de tipo en la llamada a 'Join'."

Todas las búsquedas que hice, relacionadas con el tipo coinciden con errores, pero cuadruplicé todos mis tipos dentro de las uniones, y son los mismos.

+0

¿Ya configuró sus claves externas? Si es así, esto puede ser trivial. –

+0

¿Ha intentado cortar una de las combinaciones (y todo lo que depende de ella) para ver si se compila/ejecuta? ¿Al menos de esa manera podrías acotar a cuál de ellos se está quejando? – R0MANARMY

Respuesta

5

tratar de hacer algo como esto:

join w in db.INIWREs on 
new { i.BJCOMP, i.BJBECD, i.BJBESK } 
    equals 
     new { BJCOMP = w.A7COMP, BJBECD = w.A7BECD, BJBESK = w.A7BESK } 

debería funcionar.

+0

Esto tiene sentido. Las propiedades deberían ser exactamente iguales. – tobias86

+0

Tigran, gracias por esto, funcionó, lo siento por la respuesta tardía. –

+1

@Sean Haddy: de nada. – Tigran