Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Linq多层次连接表_C#_Linq_Join_Multi Level - Fatal编程技术网

C#Linq多层次连接表

C#Linq多层次连接表,c#,linq,join,multi-level,C#,Linq,Join,Multi Level,我试图查询三级表ef_staff表3次,以获得每行的3个diff staff对象。如何在LINQ中翻译这个 SELECT a.a_appraisalid, a.a_year, c.s_staffName, c2.s_staffName, c3.s_staffName FROM ef_appraisal a, idp_application b, ef_staff c, ef_staff c2, ef_staff c3 WHERE a.a_appraisalid = b.a_appraisa

我试图查询三级表ef_staff表3次,以获得每行的3个diff staff对象。如何在LINQ中翻译这个

SELECT a.a_appraisalid, a.a_year, c.s_staffName, c2.s_staffName, c3.s_staffName
FROM   ef_appraisal a, idp_application b, ef_staff c, ef_staff c2, ef_staff c3
WHERE  a.a_appraisalid = b.a_appraisalid AND
       a.a_staffid = c.s_staffid AND
       a.a_appraisedby = c2.s_staffid AND
       a.a_reviewedby = c3.s_staffid
我已经尝试了很多方法,但在第二次和第三次加入员工时仍然出现错误“类型推断失败”。我错过了什么

from application in applications

join appraisal in pmsEntities.ef_appraisal on application.a_appraisalid equals appraisal.a_appraisalid

join staff in pmsEntities.ef_staff on appraisal.a_staffid equals staff.s_staffid

join appraiser in pmsEntities.ef_staff on staff.s_appraisedby equals appraiser.s_staffid into ap

from appraiser in ap.DefaultIfEmpty() 

join reviewer in pmsEntities.ef_staff on staff.s_reviewedby equals reviewer.s_staffid into rv

from reviewer in rv.DefaultIfEmpty() 

join company in pmsEntities.ef_company on appraisal.a_companyid equals company.c_companyid into jc

from company in jc.DefaultIfEmpty()

select appraisal, staff.staffName, appraiser.staffName, reviewer.staffName, company.compName

我纠正了错误。职员对象的第一级连接应链接到职员对象的第二级,如下所示:

将员工加入pmsenties.ef\u评估中的员工。a\u staffid等于staff.s\u staffi加入staffj

                    from staff1 in staffj

                    join appraiser in pmsEntities.ef_staff on staff1.s_appraisedby equals appraiser.s_icno into staff2
`


希望它有帮助

您能格式化您的查询以使其可读吗?您使用哈希联接而不是普通联接有什么原因吗?没有原因,联接由前一位作者使用。您的列的数据类型是什么,特别是在联接中使用的列?你打算扩展你的查询吗?由于在结果集中只使用表ef_评估中的列,因此可以将查询更改为使用WHERE in()来消除联接。我使用的是所有联接的表,联接列都是ID,因此它是int或string。