2010-09-22 21 views
9

Esto me ha confundido, tengo el error título en la unión de la siguiente LINQ:El tipo de una de las expresiones de la cláusula de combinación es incorrecta cuando los tipos son los mismos

var r = (from k in location.tblKeyAccountInfoes 
        join l in location.tblLocations 
        on new { k.MemberID, k.LocationID } equals 
        new {l.MemberId, l.LocationId } 
        where k.MemberID == memberid && k.UserName == username 
        select l.LocationName); 

      return r.ToString(); 

Sin embargo, el escriba para MemberId y LocationId es el mismo, así que no estoy seguro de lo que hice mal.

Cualquier apuntador recibido con gratitud.

Respuesta

18

Los tipos de MemberID y LocationID pueden ser los mismos, pero también tienen que tener el mismo nombre .

En su ejemplo, uno de ellos tiene ID (capital D) y el otro tiene Id (minúscula d). Eso es suficiente para hacer que los tipos anónimos separen los tipos.

Puede solucionar este problema mediante la especificación de nombres de forma explícita, por ejemplo:

join l in location.tblLocations 
on new { k.MemberID, k.LocationID } equals 
new { MemberID = l.MemberId, LocationID = l.LocationId } 
+0

Ah derecha - Boo !!! Buena actualización y el truco - aplaude Timwi, más apreciada y buena explicación también. –

Cuestiones relacionadas