2013-05-29 72 views
1
 from mstr in m_db.master_records 
     join loctab in 
     (
      from bp in m_db.basepay_records 
      select new { empID = bp.p_empid, loc = bp.p_loc } 
    ) 
     .Union 
     (
      from ass in m_db.emp_assignments 
      select new { ass.a_emp, ass.a_loc } 
    ) 
     on mstr.prem_emp = loctab.empID 

獲取最後一行的錯誤,說loctab不在範圍內。我已經玩了一下,但我看不到一種不同的方式來做到這一點。LINQ的子查詢聯同工會

+0

有一件事是,「=」應該是「等於」。 – John

+0

另外,外部查詢中沒有選擇。這很奇怪,它告訴你loctab會超出範圍,因爲我不認爲它是。 – John

+0

非常難以在沒有數據庫的情況下進行分析,但您應該可能希望使用join/on聲明第一個查詢,然後聯合第二個查詢。如果需要,你可以單獨申報。 query1WithJoin.Union(QUERY2)。 –

回答

2

你最後一行應該是這樣的。

on loctab.empID equals mstr.prem_emp 
select //... perform your select on the unioned tables. 
1

我不明白什麼「不在範圍內」是指在這裏,但有一件事是錯誤的。匿名類型應該有完全一樣的定義,否則你無法聯盟:

您有:

select new { empID = bp.p_empid, loc = bp.p_loc } 

,則還要使用:

select new { empID = ass.a_emp, loc = ass.a_loc } 

也許異常消息是變相告訴這件事。