2014-05-30 3 views
0

У меня есть SQL запрос как:Регистрация запросов создает проблемы в Linq к SQL

SELECT b.firstName + ' ' + b.lastName AS Name, a.* 
FROM EH_PP_TeacherObservations AS a INNER JOIN 
     account AS b ON a.EH_PP_TeacherAcctId = b.id LEFT JOIN 
     EH_PP_ObserverStatus AS c ON c.EH_PP_AcctId = b.id 
WHERE a.EH_PP_TOSRT_TeacherObservationStatusIDEH = '0B823C51-EEAE-4490-B0EC-C1F0B1206AEB' AND 
     c.EH_PP_O_isObserver = 1 

Я хотел бы иметь такой же запрос в LINQ.

Я сделал это следующим образом:

List<Entity.account> list = new List<Entity.account>(); 

       list = (

        from a in context.EH_PP_TeacherObservations 
        join b in context.accounts on new { EH_PP_TeacherAcctId = a.EH_PP_TeacherAcctId } equals new { EH_PP_TeacherAcctId = b.id } 
        join c in context.EH_PP_ObserverStatus on new { EH_PP_AcctId = b.id } equals new { EH_PP_AcctId = Convert.ToGuid(c.EH_PP_AcctId) } into c_join 
        from c in c_join.DefaultIfEmpty() 
        where 
         a.EH_PP_TOSRT_TeacherObservationStatusIDEH == new Guid("0B823C51-EEAE-4490-B0EC-C1F0B1206AEB") && 
         c.EH_PP_O_isObserver == true 
        select new 
        { 
         Name = (b.firstName + " " + b.lastName), 
         EH_PP_ObservationID = a.EH_PP_ObservationID, 
         EH_PP_TE_TeacherEvalID = a.EH_PP_TE_TeacherEvalID, 
         EH_PP_TOT_ObservationStartDateTime = a.EH_PP_TOT_ObservationStartDateTime, 
         EH_PP_TOT_ObservationEndDateTime = a.EH_PP_TOT_ObservationEndDateTime, 
         EH_PP_TOT_Announced = a.EH_PP_TOT_Announced, 
         EH_PP_TOT_ObservationNum = a.EH_PP_TOT_ObservationNum, 
         EH_PP_TeacherAcctId = a.EH_PP_TeacherAcctId, 
         EH_PP_ObserverAcctID = a.EH_PP_ObserverAcctID, 
         EH_PP_TOSRT_TeacherObservationStatusIDEH = a.EH_PP_TOSRT_TeacherObservationStatusIDEH 
        } 

        ).ToList<Entity.account>(); 

Но его дает мне ошибку на

join b in context.accounts on new { EH_PP_TeacherAcctId = a.EH_PP_TeacherAcctId } equals new { EH_PP_TeacherAcctId = b.id } 

об ошибке на 'присоединиться' слова.

Type of one of expressions in the join clause is incorrect. 
Type interface failed to call to 'join' 

Пожалуйста, помогите мне.

Какая ошибка ???

+0

Какие типы каждый из этих столбцов вы вступающих на? Кто-нибудь из них обнуляется? –

+0

нет ... ни один из них не может быть нулевым –

ответ

1

попробовать это

List<Entity.account> list = new List<Entity.account>(); 


       list = (

        from a in context.EH_PP_TeacherObservations 
        join b in context.accounts on b.id equals a.EH_PP_TeacherAcctId 
        join c in context.EH_PP_ObserverStatus on Convert.ToGuid(c.EH_PP_AcctId) equals b.id into c_join 
        from c in c_join.DefaultIfEmpty() 
        where 
         a.EH_PP_TOSRT_TeacherObservationStatusIDEH == new Guid("0B823C51-EEAE-4490-B0EC-C1F0B1206AEB") && 
         c.EH_PP_O_isObserver == true 
        select new 
        { 
         Name = (b.firstName + " " + b.lastName), 
         EH_PP_ObservationID = a.EH_PP_ObservationID, 
         EH_PP_TE_TeacherEvalID = a.EH_PP_TE_TeacherEvalID, 
         EH_PP_TOT_ObservationStartDateTime = a.EH_PP_TOT_ObservationStartDateTime, 
         EH_PP_TOT_ObservationEndDateTime = a.EH_PP_TOT_ObservationEndDateTime, 
         EH_PP_TOT_Announced = a.EH_PP_TOT_Announced, 
         EH_PP_TOT_ObservationNum = a.EH_PP_TOT_ObservationNum, 
         EH_PP_TeacherAcctId = a.EH_PP_TeacherAcctId, 
         EH_PP_ObserverAcctID = a.EH_PP_ObserverAcctID, 
         EH_PP_TOSRT_TeacherObservationStatusIDEH = a.EH_PP_TOSRT_TeacherObservationStatusIDEH 
        } 

        ).ToList<Entity.account>(); 
Смежные вопросы