LINQ使用union加入子查询

时间:2013-05-29 18:05:25

标签: c# linq tsql

      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不在范围内。我玩了一下,但是我看不到另外一种方法。

2 个答案:

答案 0 :(得分:2)

你最后一行应该是这样的。

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

答案 1 :(得分:1)

我不明白“不在范围内”在这里意味着什么,但有一件事是错的。两个匿名类型应该具有完全相同的定义,否则您不能使用Union:

你有:

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

然后还使用:

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

也许异常消息是一种伪装的方式来告诉它。