连接查询在Linq to SQL中产生问题

本文关键字:问题 SQL to 查询 Linq 连接 | 更新日期: 2023-09-27 18:05:49

我有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'

请帮帮我。

错误是什么??

连接查询在Linq to SQL中产生问题

try this

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>();