2010-03-19 3 views
1

У меня есть этот Linq запрос:ошибка с LINQ присоединиться

var segreterie = from s in db.USR_Utenti join h in db.USR_Accounts 
        on new {s.ID, settings.GruppoSegreteria} 
        equals new {h.USR_UtentiReference,h.ID_Gruppo} select s; 

, который имеет эту проблему:

The type of one of the expressions in the join clause is incorrect. Type inference failed in the call to 'Join'. 

как я могу сделать, чтобы решить эту проблему?

ответ

6

Эти два типа должны быть одинаковыми - это означает, что им понадобятся те же имена свойств, что и анонимные типы. Попробуйте это:

var segreterie = from s in db.USR_Utenti join h in db.USR_Accounts 
       on new {s.ID, Groups = settings.GruppoSegreteria} 
       equals new {ID = h.USR_UtentiReference, Groups = h.ID_Gruppo} 
       select s; 

Это предполагает, что s.ID и h.USR_UtentiReference имеют один и тот же тип и settings.GruppoSegreteria и h.ID_Gruppo сделать то же самое.

0

Аналогичным образом, если вы выполняете объединение в поле с нулевым значением (например, int и int?), Вам может понадобиться сделать что-то вроде (где Field2 является int? В таблице 1 и int в таблице2) :

from l in Table1 
join l2 in Table2 
    on new { l.Field1, Field2 = (l.Field2.Value == null ? -1 : l.Field2.Value) } equals new { l2.Field1, Field2 = l2.Field2 } 
Смежные вопросы