2011-04-06 79 views
9

Tengo un complejo LINQ to SQL para consultar, que se une a dos tablas, una es bastante simple y funciona bien, pero una es bastante compleja y me estoy poniendo The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'GroupJoinLINQ - 'el tipo de una de las expresiones en la cláusula join es incorrecto'

es una consulta bastante largo, y lo hago en el desarrollo de un trabajo con acceso a internet, así que pensé que vería si la línea que parece ser la cuestión es suficiente:

join consignments in dc.Consignments 
    .FirstOrDefault(x => x.TripDate > dateFrom 
    && x.TripDate < dateTo 
    && x.DeliveryDepot == depot.Letter 
    && (x.DeliveryStatus == 2 || x.DeliveryStatus == 3)) 
    on new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
     equals new { Reg = consignments.VehicleReg, Depot = consignments.DeliveryDepot } 
    into con 

Me he asegurado de que los tipos de datos sean los mismos, pero todavía no funciona. ¿Algunas ideas?

+0

Gracias a todos, bueno después de mirar un poco más, uno de los tipos de datos Depot es 'char (2)', y otro es 'nchar (10)'. ¿Eso causaría esto? – Chris

Respuesta

18

¿Estás seguro de que el virus en línea es del mismo tipo que el de los envíos? ¿Salto de entrega?

on new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
equals new { Reg = consignments.VehicleReg, Depot = consignments.DeliveryDepot } 
+3

Esto me estaba causando muchos dolores de cabeza hasta que asigné un Tipo a cada artículo. '{ID = something.Id} es igual a {ID = otherthing.Id}' donde ID es el tipo –

4

Creo que el problema es en esta parte:

on new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
    equals 
    new { Reg = consignments.VehicleReg, Depot = consignments.DeliveryDepot } 

Asegúrese de que s.VehicleReg tiene el mismo tipo que consignments.VehicleReg y s.VehicleDepot tiene el mismo tipo que consignments.DeliveryDepot.

0

También asegúrese de que los nombres de sus miembros sean exactamente los mismos y el mismo caso. Por ejemplo:

new { Reg = s.VehicleReg, Depot = s.VehicleDepot } 
    equals 
    new { Reg = consignments.VehicleReg, DEpot = consignments.DeliveryDepot } 

fallarían porque el depósito es un caso diferente en el segundo tipo anónimo.

Cuestiones relacionadas