2

第 3 レベルのテーブル ef_staff テーブルを 3 回クエリして、各行の 3 つの差分スタッフ オブジェクトを取得しようとしています。これを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

私は多くの方法を試してきましたが、スタッフの 2 回目と 3 回目の参加で「タイプの推論に失敗しました」というエラーがまだあります。ここで何が欠けていますか?

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
4

1 に答える 1

1

間違いを修正しました。次のように、譜表オブジェクトの第 1 レベルの結合を第 2 レベルの譜表オブジェクトにリンクする必要があります。

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

                    from staff1 in staffj

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

`

それが役に立てば幸い

于 2012-12-12T13:25:29.460 に答える